Возможность скрыть категории третьего уровня на главной странице категорий без нарушения разметки

Это разумное замечание: поддерживать балансировку макета страницы /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, чтобы скрыть все категории третьего уровня (внуки).

2 лайка