隐藏子类别而不隐藏其在主题列表中的主题?

一般来说,您应避免完全覆盖模板,因为它们需要维护——如果 Discourse 更新导致您的主题出现问题,您必须运行差异比较并检查发生了哪些变化。

您可以退一步,改为修改传递给模板的数据。

topic-list-item 是一个 Ember 组件,因此您可以使用 api.modifyClass 来实现您想要的更改。

例如,以下代码片段将在子分类主题标题下方显示父分类徽章。如果主题位于主分类中,则该代码不会生效。

<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");

  // 父分类 ID
  const targetCategoryIds = [9, 15, 50];

  const useParentCategory = function () {
    const parentCategory = this.attrs.topic.category.parentCategory;
    const switchToParent = parentCategory && targetCategoryIds.includes(parentCategory.id);

    if (switchToParent) {
      this.attrs.topic.set("category", parentCategory);
    }
  };

  api.modifyClass("component:topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });

  api.modifyClass("component:latest-topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });
</script>