Ottieni la descrizione completa di una categoria in un tema

Per quanto ne so, la descrizione è archiviata (e mantenuta) nella prima sezione del primo post di una descrizione.

Vorrei aggiungere dei link vicino ai pulsanti “In alto” e “Ultime” nella categoria. Poiché un tema non può essere configurato per ogni categoria, ho pensato di poter semplicemente aggiungere i dati per i link nella “parte nascosta” di una descrizione di categoria, dato che nella lista delle categorie viene mostrato solo il primo frammento della descrizione.

I dati avrebbero questo aspetto: {TAG, testoLink, titoloLink, hrefLink}.

Scusa, immagino non sia l’ideale:

È possibile ottenere i dati completi del testo della descrizione di una categoria in un tema o widget?

Grazie in anticipo.

Sì, è esattamente ciò che fa Category Banners.

Beh, penso che:

  • category.description restituisca la descrizione della categoria ben formattata
  • category.description_text restituisca i dati in formato testo

ma entrambi restituiscono solo il primo capitolo della descrizione e non il primo post completo della categoria che contiene la descrizione. Mi sto perdendo qualcosa?

Oh, questo è il comportamento previsto. Discourse utilizza solo il primo paragrafo dell’argomento ‘about’ come descrizione della categoria in tutta l’interfaccia utente.

Se hai bisogno di altro, dovrai effettuare un’ulteriore chiamata API per ottenere il contenuto.

Sarebbe possibile in un componente del tema? Hai un esempio?

Topic List Sidebars fa esattamente questo!

Se l’obiettivo è rendere i link condizionalmente visibili su pagine di categorie specifiche, ti consiglio di fare un passo indietro e provare un approccio diverso.

Immagina di avere una configurazione del genere:

target_category, link_text, link_title, link_href

Potresti quindi fare qualcosa di simile a questo.

api.addNavigationBarItem({
  displayName: text, // testo del link
  name: title, // titolo del link
  href: href, // href del link
  customFilter: category => {
    return (
      category && category.name.toLowerCase() === TARGET_CATEGORY.toLowerCase() // categoria di destinazione
    );
  }
});

La parte fondamentale qui è il customFilter, perché credo sia esattamente ciò che stai cercando.

Se hai più link, dovrai avvolgere tutto in un forEach.

Grazie @Falco. Era esattamente ciò di cui avevo bisogno.

Grazie @Johani. Ho riflettuto sulla tua suggerimento. Purtroppo abbiamo un’enorme quantità di categorie e la configurazione nelle impostazioni sarebbe troppo grande e ingestibile. Per questo motivo ho scritto questo tema.

L’ho fatto funzionare correttamente. Dopo aver aggiunto il supporto per parent_categories e corretto alcuni piccoli bug, lo documenterò e lo “rilascierò in modo appropriato”.

Infine, immagino che sia tutto. Sentitevi liberi di usarlo. Un grande “Grazie” a tutti coloro che lavorano su Discourse. Lavoro eccezionale.

Collegamento al componente del tema: