Nascondere sottocategorie senza nascondere i loro argomenti nell'elenco argomenti?

In generale, dovresti evitare sovrascritture complete dei template poiché richiedono manutenzione: dovresti eseguire un diff e verificare cosa è cambiato se un aggiornamento di Discourse interrompe il tuo tema.

Ciò che puoi fare è fare un passo indietro e modificare i dati che vengono passati al template.

topic-list-item è un componente Ember, quindi puoi utilizzare api.modifyClass per apportare le modifiche desiderate.

Ad esempio, ecco un frammento di codice che mostrerà il badge della categoria genitore nei topic delle sottocategorie sotto il titolo. Se il topic si trova nella categoria principale, il codice non avrà alcun effetto.

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

  // ID delle categorie genitore
  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>