首页功能

您可能可以使用一些 CSS 来实现这一点。

在最后一条消息之前,我尝试了以下操作。它解决了功能字体大小的问题,但它使主页主题列表的其余部分的字体大小变得非常小。

.featured-topic {
    font-size: 9px;
}

您指的是这些链接吗?
image

如果我更改了它,我看不到页面其余部分的任何变化。

应用上述 CSS 代码后,您可以在下面看到主题列表。字体变得非常小。

SNAG-0000

移除了 CSS 代码后,主题列表中的字体大小恢复正常。

SNAG-0001

好的。试试这个:

.featured-topic h3 a {
  font-size: 9px;
}
1 个赞

谢谢!它奏效了!

1 个赞

功能请求:请添加显示主题摘要的功能

使用受限的标签组(Tag Group)时,标签功能(Tag-Feature)是否存在错误或行为异常?
我创建了一个具有以下限制的标签组:

标签对所有人可见,但只有以下组可以使用它们

  • 管理员(Admins),版主(Moderators)

featured1
我将此组件的“featured”标签添加到了这个组中。

以下是我的组件设置:

当我以管理员身份创建带有“featured”标签的主题时,该标签对我、对版主可见,但对其他用户组不可见。对于其他注册用户,它只显示为:

Tag1, Tag2,

对于管理员和版主,“featured”标签会正确显示:

Tag1, Tag2, featured

另一个问题:如果标签被隐藏,我认为不应该显示逗号。这会使用户感到困惑。
另外,我不确定这是否相关,但帖子位于仅对注册用户可见、对访客(Guests)不可见的分类中。
哦,顺便说一句:感谢这个组件,工作很出色!除了这个微小的功能之外,它对我来说运行完美!

哈哈,我在搜索一个小烦恼时,竟然找到了我自己以前的帖子 :slight_smile:

我刚刚意识到(再次),实际加载的图片与它们实际渲染的尺寸相比大得离谱。以我的情况为例,它加载的是 1000x1000 像素的图片,但渲染尺寸却不到 200 像素。

我检查了一些数据,如果我能用 400x400 像素的版本替换它们,带宽(对于特色行)大约可以节省 83%,总共节省 1.6MB。我知道这些图片有缓存,但这肯定会影响初始页面加载速度,而且我想这也不会加快页面渲染速度吧?我在论坛的每个页面上都使用了这些特色图片,所以我认为影响是实实在在的。

是否可以在 TC 的配置中添加一个选项,让我们选择使用哪种图片尺寸,这样每个人都可以根据自己的主题进行调整?

1 个赞

抓得好!我有一段时间没看这个组件了,所以趁机做了一次整体优化:

https://github.com/discourse/discourse-homepage-feature-component/pull/96

这次更新让图片使用了 srcset,这样系统会自动选择适合容器的图片。可以通过新的 featured_image_sizes 设置来指定可用的图片尺寸。

我还修复了 hide featured tag 设置(之前无法正常工作,导致标签始终隐藏),并将输入方式从纯文本输入改为了标签类型设置。这意味着现在可以根据需要使用多个标签。

1 个赞

太好了,谢谢!我认为这也解决了那个令人困惑的缺失特色标签问题。

不过有一件事:更新之后,它触发了大量的图像处理任务——我现在有超过 2 万个任务在排队。这是预期的吗?这似乎有点浪费,因为我只需要最新的 5 个。

1 个赞

嗯,你说得对,很遗憾没有办法避免这个问题。我认为因为这个原因,回滚那部分代码可能是值得的。我在这里进行回滚:

现实情况是,我无法通过这种方式从主题中生成一组针对优化的缩略图,只能全部处理或完全不处理。因此,我们需要其他方法来优化像这样更有限的情况。

1 个赞

明白了。那些不需要的缩略图之后会自动删除吗?

而且看起来我的主题已经包含了许多可能完全适用的不同图片格式——比如 400x400 或 500x500。能不能让这些尺寸可选?与当前使用的 1024x1024 相比,这已经能带来不错的带宽节省,而且不会增加额外的处理或存储开销。

(忽略由 TC 更新添加的 300x300、600x600 和 900x900 那些):

-rw-r--r-- 1 1000 www-data 723K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_1000x1000.jpeg
-rw-r--r-- 1 1000 www-data 757K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_1024x1024.jpeg
-rw-r--r-- 1 1000 www-data  30K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_200x200.jpeg
-rw-r--r-- 1 1000 www-data  68K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_300x300.jpeg
-rw-r--r-- 1 1000 www-data 118K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_400x400.jpeg
-rw-r--r-- 1 1000 www-data 185K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_500x500.jpeg
-rw-r--r-- 1 1000 www-data 263K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_600x600.jpeg
-rw-r--r-- 1 1000 www-data 417K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_750x750.jpeg
-rw-r--r-- 1 1000 www-data 470K Jun 23 21:32 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_800x800.jpeg
-rw-r--r-- 1 1000 www-data 595K Jun 30 22:18 80c77ac08d5671a1dc6d2a15ddea28e6d56f98c9_2_900x900.jpeg
1 个赞

我想不会,因为源图像仍在被使用,而这些是优化后的版本。除了占用一些存储空间外,没有其他实际危害。

你可以从 Rails 控制台清理这些文件,这涵盖了该设置默认包含的尺寸,并且不会删除由其他地方修饰器生成的图像。

# 1. 查看实际存在的内容与仍然合法注册的内容之间的差异
still_needed = Topic.thumbnail_sizes +
  ThemeModifierHelper.new(theme_ids: Theme.pluck(:id)).topic_thumbnail_sizes

TopicThumbnail.group(:max_width, :max_height).count

# 2. 移除不需要的尺寸(文件 + 记录)
[[300, 300], [600, 600], [900, 900]].each do |w, h|
  next if still_needed.include?([w, h]) # 不要触碰其他东西仍在使用的尺寸

  TopicThumbnail
    .where(max_width: w, max_height: h)
    .find_each { |tt| tt.optimized_image&.destroy! }

  # 没有优化图像的尝试记录不会级联删除
  TopicThumbnail.where(max_width: w, max_height: h).delete_all
end

哦,是的,好主意——我可以检查是否已经存在缩略图,如果存在,就使用最佳尺寸。如果只有原始图像可用,那将始终作为后备方案。

在这里进行:

2 个赞

太棒了,我今晚就测试一下!

我刚才回来是想重新提一个旧请求:是否有可能添加一个选项,按标记日期对精选行进行排序?我们的精选顺序既不是由主题的创建日期决定的,也不是由最新活动决定的——对我们来说,应该由我们应用标记的时刻来决定顺序。我之前没意识到,但我们现在的精选行有点乱糟糟的 :wink:

1 个赞

恐怕这不太可能……我们无法根据标签添加时间来排序主题列表。一种变通方法是编辑主题的时间戳?

1 个赞

别担心。我现在正用一点“胶带”临时解决这个问题:我 Fork 了你的 TC,并创建了一个 Data Explorer 查询,按标签日期排序获取精选主题,并包含图片 URL。一个小型的外部 Web 脚本加载并缓存这些数据,然后将 JSON 返回给 TC。运行起来非常完美,虽然有点丑陋 :wink:

如果任何人需要,我很乐意分享我的代码和查询。

2 个赞

更新:好吧,我意识到这实际上只是我问题的一半。我们还使用首页功能 TC 来展示精选艺术作品的画廊。而画廊的排序现在不再与我们精选行的排序一致,这让访问者感到困惑(也让我很恼火)。因此,画廊也需要按标签日期排序——而不仅仅是按主题创建日期或最后活动日期排序。

这时候我就“不守规矩”了,转而求助 Claude Code 来帮我。首先,我让它创建了一个小插件,添加了一个按标签日期排序标签列表的选项,比如 /tag/featured?order=tag_date

一旦这个功能生效,我就通过在首页功能 TC 中添加 tag_date 来扩展排序选项。我还将小部件从复选框改为下拉菜单:

瞧!现在我有了一个按我期望的方式(说实话,也是我认为它应该的方式 :wink: )运行的精选行,并且画廊也与之匹配:

如果任何人想尝试,这是我的代码:

你可以在 https://blenderartists.org/ 上看到它的实际效果。

温馨提示:这些都是 Claude Code 的工作。我审查了力所能及的部分,但最终我在这方面并非专家。由于它们是我们 3D 图形社区的关键部分,我会根据需要更新这些内容。

祝玩得开心!

1 个赞