这是一个合理的需求,因为如果只有少数几个分类,却包含多层子分类,那么 /categories 页面的布局确实很难平衡。
我们真的不希望大家再使用 modifyClass,因为正如你所说,维护这类覆盖规则可能需要一定的开发工作量。
现在我们有一些更新的自定义方法,更容易保持稳定性。在这种情况下,值转换器(value transformer)可以帮助解决这个问题。我刚刚添加了一个,很快将在更新中可用:DEV: Add a category-list-subcategories value transformer - Pull Request #42804 - discourse/discourse - GitHub
一个简单的演示如下:
api.registerValueTransformer(
"category-list-subcategories",
({ value, context }) =>
context.page === "categories" && context.category.level >= 1 ? [] : value
);
这将只显示一层子分类。现在使用转换器还有其他可用的选项,因此我制作了一个主题组件,我们可以对其进行维护以支持这些功能。
因此,一旦 Discourse 更新,你可以安装此组件来控制 /categories 页面以及其他一些分类列表中显示的子分类数量:
将 Categories page depth 设置为 2,以隐藏所有孙级分类。