あなたが探している機能は、こちらのテンプレートにある isGrandParent というプロパティに基づいて決定されます。
カテゴリに孫カテゴリが存在する場合、孫カテゴリ用の適切なマークアップがレンダリングされます。それ以外の場合は、子カテゴリがレンダリングされます。
これを回避する最も簡単な方法は、parent-category-row Ember コンポーネント内でそのプロパティを上書きすることです。
modifyClass プラグイン API メソッドを使用して実現できます。
Developing Discourse Themes & Theme Components
modifyClass を使用すると、parent-category-row Ember コンポーネントクラスを再オープンして新しいメソッドを追加できます。
これらのメソッドが実行され、データが利用可能になるようにするには、didReceiveAttrs フックにフックする必要があります。
これを行うには、組み込みのデコレータである @on を使用できます。
準備が整ったら、そのコンポーネントのテンプレートを通じてレンダリングされるすべてのカテゴリに対して isGrandParent を上書きし、すべて false に設定するだけです。
以下に、それらをすべてまとめたコードを示します。
<script type="text/discourse-plugin" version="0.8">
const { on } = require("discourse-common/utils/decorators");
api.modifyClass("component:parent-category-row", {
@on("didReceiveAttrs")
removeGrandchildCategories() {
this.category?.set("isGrandParent", false);
}
});
</script>
これをテーマの header タブの common に追加します。
これにより、テンプレートは子カテゴリのみをレンダリングし、孫カテゴリは無視するようになります。
この同じパターンを使用して、任意のコンポーネント内の任意のプロパティを変更することもできます。