Lo que estás buscando se determina según una propiedad llamada isGrandParent en la plantilla aquí:
discourse/app/assets/javascripts/discourse/app/templates/components/parent-category-row.hbs at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub
Cuando una categoría tiene nietos, renderizamos el marcado correspondiente para las categorías de nietos. De lo contrario, renderizamos las categorías hijas.
La forma más sencilla de sortear esto es sobrescribir esa propiedad en el componente Ember parent-category-row.
Puedes lograrlo con el método de la API de plugins modifyClass.
Developing Discourse Themes & Theme Components
modifyClass te permite volver a abrir la clase del componente Ember parent-category-row y agregar nuevos métodos.
Para asegurar que esos métodos se ejecuten y que los datos estén disponibles, necesitarás conectarlos al hook didReceiveAttrs.
Para hacerlo, puedes usar el decorador incorporado @on.
Una vez que tengas todo listo, simplemente puedes sobrescribir isGrandParent para todas las categorías renderizadas a través de la plantilla de ese componente y establecerlas en false.
Aquí está todo eso junto:
<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>
Agrega esto a la pestaña header de tu tema bajo common.
Esto hará que la plantilla solo renderice las categorías hijas e ignore las categorías de nietos.
Puedes usar este mismo patrón para modificar cualquier propiedad en cualquier componente.