O que você está procurando é determinado por uma propriedade chamada isGrandParent no modelo aqui.
Quando uma categoria tem netos, renderizamos o markup relevante para as categorias de netos. Caso contrário, renderizamos as categorias filhas.
A maneira mais fácil de contornar isso é sobrescrever essa propriedade no componente Ember parent-category-row.
Você pode fazer isso com o método da API de plugin modifyClass.
Developing Discourse Themes & Theme Components
O modifyClass permite que você reabra a classe do componente Ember parent-category-row e adicione novos métodos.
Para garantir que esses métodos sejam executados e os dados estejam disponíveis, você precisará conectá-los ao hook didReceiveAttrs.
Para fazer isso, você pode usar o decorador embutido @on.
Depois de ter tudo pronto, você pode simplesmente sobrescrever isGrandParent para todas as categorias renderizadas via o modelo desse componente e defini-las como false.
Aqui está tudo isso reunido:
<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>
Você adiciona isso à aba header do seu tema sob common.
Isso fará com que o modelo renderize apenas as categorias filhas e ignore as categorias de netos.
Você pode usar o mesmo padrão para modificar qualquer propriedade em qualquer componente.