То, что вы ищете, определяется свойством isGrandParent в шаблоне здесь:
Если у категории есть внучатые категории, мы рендерим соответствующую разметку для них. В противном случае рендерятся дочерние категории.
Самый простой способ обойти это — переопределить это свойство в компоненте Ember parent-category-row.
Это можно сделать с помощью метода плагина modifyClass.
Developing Discourse Themes & Theme Components
modifyClass позволяет переоткрыть класс компонента parent-category-row и добавить новые методы.
Чтобы эти методы сработали и данные были доступны, необходимо подключить их к хуку 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.
Это приведёт к тому, что шаблон будет рендерить только дочерние категории и игнорировать внучатые.
Вы можете использовать этот же подход для изменения любого свойства в любом компоненте.