Unterkategorien ausblenden, ohne ihre Themen in der Themenliste auszublenden?

Im Allgemeinen solltest du vollständige Template-Überschreibungen vermeiden, da sie Wartung erfordern – du musst einen Diff durchführen und prüfen, was sich geändert hat, falls ein Discourse-Update dein Theme beschädigt.

Stattdessen kannst du einen Schritt zurücktreten und die Daten anpassen, die an das Template übergeben werden.

Das topic-list-item ist eine Ember-Komponente, sodass du api.modifyClass verwenden kannst, um die gewünschten Änderungen vorzunehmen.

Hier ist beispielsweise ein Codeausschnitt, der das Badge der übergeordneten Kategorie unter dem Titel für Unterthemen anzeigt. Wenn sich das Thema in der Hauptkategorie befindet, hat der Code keine Auswirkung.

<script type="text/discourse-plugin" version="0.8">
  const { on } = require("discourse-common/utils/decorators");

  // IDs der übergeordneten Kategorien
  const targetCategoryIds = [9, 15, 50];

  const useParentCategory = function () {
    const parentCategory = this.attrs.topic.category.parentCategory;
    const switchToParent = parentCategory && targetCategoryIds.includes(parentCategory.id)

    if (switchToParent) {
      this.attrs.topic.set("category", parentCategory);
    }
  };

  api.modifyClass("component:topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });

  api.modifyClass("component:latest-topic-list-item", {
    @on("didReceiveAttrs")
    setCategory() {
      useParentCategory.call(this);
    }
  });
</script>