Was Sie suchen, wird basierend auf einer Eigenschaft namens isGrandParent in der folgenden Vorlage festgelegt:
discourse/app/assets/javascripts/discourse/app/templates/components/parent-category-row.hbs at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub
Wenn eine Kategorie Enkelkategorien hat, wird das entsprechende Markup für Enkelkategorien gerendert. Andernfalls werden die Unterkategorien gerendert.
Der einfachste Weg, dies zu umgehen, besteht darin, diese Eigenschaft in der Ember-Komponente parent-category-row zu überschreiben.
Das können Sie mit der Plugin-API-Methode modifyClass erreichen.
Developing Discourse Themes & Theme Components
modifyClass ermöglicht es Ihnen, die Ember-Komponentenklasse parent-category-row erneut zu öffnen und neue Methoden hinzuzufügen.
Damit diese Methoden ausgeführt werden und die Daten verfügbar sind, müssen Sie sie mit dem Hook didReceiveAttrs verknüpfen.
Dafür können Sie den integrierten Dekorator @on verwenden.
Sobald alles vorbereitet ist, können Sie einfach isGrandParent für alle Kategorien überschreiben, die über die Vorlage dieser Komponente gerendert werden, und sie auf false setzen.
Hier ist alles zusammengefasst:
<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>
Fügen Sie dies im Tab header Ihres Themes unter common hinzu.
Dadurch wird die Vorlage so gesteuert, dass nur Unterkategorien gerendert und Enkelkategorien ignoriert werden.
Sie können dieses Muster verwenden, um jede Eigenschaft in jeder Komponente zu ändern.