Quando aggiungi un ulteriore livello di nidificazione, tutte le categorie, comprese le sottocategorie, vengono visualizzate nella pagina delle categorie

Ciò che stai cercando è determinato da una proprietà chiamata isGrandParent nel template qui.

discourse/app/assets/javascripts/discourse/app/templates/components/parent-category-row.hbs at 1472e47aae5bfdfb6fd9abfe89beb186c751f514 · discourse/discourse · GitHub

Quando una categoria ha sottocategorie di secondo livello, viene renderizzato il markup pertinente per le sottocategorie di secondo livello. Altrimenti, vengono renderizzate le sottocategorie di primo livello.

Il modo più semplice per aggirare questo problema è sovrascrivere quella proprietà nel componente Ember parent-category-row.

Puoi farlo utilizzando il metodo dell’API dei plugin modifyClass.

Developing Discourse Themes & Theme Components

modifyClass ti permette di riaprire la classe del componente Ember parent-category-row e aggiungere nuovi metodi.

Per assicurarti che quei metodi vengano eseguiti e che i dati siano disponibili, dovrai collegarli all’hook didReceiveAttrs.

Per fare ciò, puoi utilizzare il decoratore integrato @on.

Una volta che tutto è pronto, puoi semplicemente sovrascrivere isGrandParent per tutte le categorie renderizzate tramite il template di quel componente e impostarle su false.

Ecco tutto riunito

<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>

Aggiungi questo alla scheda header del tuo tema sotto common.

Ciò farà sì che il template renderizzi solo le sottocategorie di primo livello e ignori quelle di secondo livello.

Puoi utilizzare questo stesso schema per modificare qualsiasi proprietà in qualsiasi componente.

2 Mi Piace