Esiste un modo per “nascondere” le sottocategorie dalle liste degli argomenti e mostrare invece le categorie genitore sotto il titolo dell’argomento?
Il mio obiettivo è avere una categoria radice con n sottocategorie. Queste sottocategorie non devono essere visualizzate nel frontend; servono solo a limitare l’accesso ai post in base all’appartenenza a un gruppo.
Nella lista degli argomenti vorrei visualizzare la categoria genitore sotto il titolo dell’argomento, invece della sottocategoria.
Avrei pensato di usare i tag, ma purtroppo non è possibile limitare l’accesso agli argomenti in questo modo.
Il template per gli elementi nell’elenco degli argomenti mostra solo il link alla categoria dell’argomento, come questo: {{category-link topic.category}}
Quindi dovresti modificare questo template per mostrare i link alla categoria genitore:
Ma se desideri che ciò accada solo per una specifica categoria genitore, dovresti aggiungere più logica. Non so quale sia il metodo consigliato per farlo, registrando un helper Handlebars?
Un altro approccio potrebbe essere mostrare sempre sia i link alla categoria che quelli alla categoria genitore, per poi nascondere quelli che non desideri con il CSS.
Le categorie principali non sono presenti nel modello predefinito, quindi sì, immagino tu debba modificare il modello. Almeno non sono a conoscenza di un approccio più leggero per ottenerlo.
Non esiste un’impostazione del sito per modificare i modelli; ti invierò il codice per provarlo tramite messaggio privato.
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.
Ho modificato il frammento sopra per riflettere tale cambiamento. Tutto ciò che devi fare è aggiungere gli ID delle categorie padre all’array targetCategoryIds. Puoi trovare l’ID della categoria visitando la pagina della categoria e controllando l’URL.
https://meta.discourse.org/c/support/6
“6” alla fine dell’URL sopra è l’ID della categoria supporto qui su Meta.
@Johani Dove devo inserire esattamente questo frammento di codice?
Ho provato a inserirlo nella sezione <head> e nell’intestazione del componente del mio tema, dove conservo tutto il mio CSS. Ma poi l’elenco degli argomenti viene interrotto esattamente nel punto in cui dovrebbe essere elencato il primo argomento interessato della sottocategoria.
Sì, c’era un problema con il modo in cui era impostata la categoria che non avevo notato in locale. Ho modificato il frammento sopra e ora dovrebbe funzionare.
Il frammento sopra ti permette di impostare le categorie su cui vuoi che funzioni. Se vuoi che funzioni su tutte le categorie, useresti qualcosa del genere.