因此,我们的主页显示两列:左侧为分类,右侧为最新话题。
某一分类中的话题会自动更新,因此我希望在右侧列(最新)中隐藏该分类。
但我不想对所有用户静音该分类——在主页的“已静音”(即折叠/ spoiler)区域中隐藏它看起来非常糟糕。
有什么方法可以绕过这个问题吗?
因此,我们的主页显示两列:左侧为分类,右侧为最新话题。
某一分类中的话题会自动更新,因此我希望在右侧列(最新)中隐藏该分类。
但我不想对所有用户静音该分类——在主页的“已静音”(即折叠/ spoiler)区域中隐藏它看起来非常糟糕。
有什么方法可以绕过这个问题吗?
上次更新约在 2 年前。我担心可能存在兼容性问题。
最理想的情况是能够通过标准方法实现我的目标。
考虑创建一个子类别,并将父类别设置为默认列表过滤器中不包含子类别的主题?
这会影响“最新”列表在“类别+最新”主页中的显示吗?
另一个问题是,如果某人屏蔽了某个分类,这不会影响向匿名用户显示的内容,对吗?
在我的情况下,我希望实现一致性。我需要一个功能完整的分类,其行为与正常分类相同,只是其新主题和更新不会在首页的“最新”中显示。
老实说,如果不镜像您的设置,我也不确定。
不过,您也可以将子分类默认设为静音(或者在安全设置中更改可见性)。您可能需要尝试几种组合,看看哪种能接近您的需求。
如果用户静音了某项内容(主题、分类、标签或其他用户),这仅对该用户生效,不会影响其他人。
您需要在管理员设置中使用默认静音选项来使其全局生效,但即使如此,用户也可以覆盖这些设置。
没错。所以我才来这里——因为在我能想到的几种变通方法都尝试过后,仍无法解决这个问题。
拥有一个常规父类别和一个默认静音的子类别,似乎能接近您的需求?
或者,使用静音标签是否更合适?
该视图默认显示 20 个主题。因此,除非该特定类别有大量主题被置顶(无论是新主题还是回复),否则我认为直接隐藏这些主题就可以了。
你有两个选择。
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
const ignoreCategoryId = 6;
api.modifyClass("component:categories-topic-list", {
@on("didReceiveAttrs")
removeCategoryTopics() {
const filtered = this.topics.filter(
({ category_id }) => category_id !== ignoreCategoryId
);
this.topics = filtered;
},
});
</script>
这将完全阻止主题标记的渲染。将 ignoreCategoryId 更改为你想要针对的类别 ID。你可以通过访问该类别并检查浏览器中的 URL 来找到该 ID。
https://meta.discourse.org/c/support/6 <---- 最后一位数字是类别 ID
.latest-topic-list-item.category-SLUG {
display: none;
}
如果是子类别
.latest-topic-list-item.category-PARENT_SLUG-CATEGORY_SLUG {
display: none;
}
据我所知,超出此范围的任何操作都需要插件或对核心进行修改。