レイアウトを崩さずにカテゴリトップページから3階層目のカテゴリを非表示にするオプション

ご要望はもっともなものです。カテゴリが少なく、サブカテゴリが複数階層にわたる場合、/categories ページのレイアウトをバランスよく整えるのは難しい場合があります。

modifyClass の使用はもう推奨していません。ご指摘の通り、この種のオーバーライドを維持するには開発コストがかかるためです。

現在、より安定性を保ちやすい新しいカスタマイズ方法がいくつかあります。この場合、バリュートランスフォーマーが役立ちます。近日中にアップデートで利用可能になるよう、こちらに追加しました: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
);

これにより、サブカテゴリは1階分のみ表示されます。トランスフォーマーを使用することで他のオプションも利用可能になったため、それらをサポートするためにメンテナンス可能なテーマコンポーネントを作成しました。

したがって、Discourse をアップデートした後、これをインストールすることで、/categories やその他のカテゴリ一覧に表示されるサブカテゴリの数を制御できます:

Categories page depth を 2 に設定すると、すべての子孫カテゴリ(孫カテゴリ)が非表示になります。

「いいね!」 2