Come implementare l'ordinamento personalizzato dei tag

Ciao.\n\nSto cercando di eseguire un ordinamento personalizzato delle etichette degli argomenti in base al valore del nome del loro gruppo di etichette.\n\nHo esaminato i componenti del tema e penso che sia la strada da percorrere, ma vorrei un parere a riguardo, oltre a qualche dritta, dato che questo sarebbe il mio primo componente del tema.\n\nSaluti.

3 Mi Piace

Ho finito per usare il campo description del tag per memorizzare un intero per simulare l’ordinamento che desideravo. Il fatto è che il gruppo di tag non è esposto nella struttura dei tag né nel DOM, ecco perché uso questo metodo.

Successivamente, utilizzando uno snippet di codice head dall’editor del tema, ho iniettato il seguente script nel DOM.

Questo mi ha permesso di riordinare dinamicamente i tag. Sebbene al momento sia un “hack”, almeno sta funzionando.

<script type="text/discourse-plugin" version="0.8">
  api.addTagsHtmlCallback(function(topic, params) {
    const containers = document.querySelectorAll(".discourse-tags");
    for (const container of containers) {
      const children = Array.from(container.children);

      children.sort((a, b) => {
        const orderA = parseInt(a.getAttribute("title"));
        const orderB = parseInt(b.getAttribute("title"));
        return orderA - orderB;
      });

      children.forEach(child => container.appendChild(child));
    }
  }, {priority: 100});
</script>