Gerarchia tradizionale a più livelli vs gerarchia discorsiva piatta

Sto faticando a convincere la nostra organizzazione a non tornare a un forum tradizionale con più livelli gerarchici, che tendono a trasformarsi in una tortura di clicca-e-vai, vedi È ora di parlare dei tag
Ho bisogno di argomenti per dimostrare che è facilmente realizzabile tramite tag, senza dover digitare nulla nella barra di ricerca.
Sarebbe ottimo se le seguenti domande venissero risposte.

Abbiamo una rete di supporter con nodi locali che crescerà a livello globale, paragonabile alla categoria “Gruppi locali” su https://discuss.okfn.org. Lì, tutte le località sono coperte da sottocategorie. Questa è la soluzione giusta se non si scende a livello di città, come dobbiamo fare noi.
Ho in mente una struttura come la seguente:

  1. categoria: nodi locali
  2. tag: continente (da discutere se abbia senso)
  3. sottocategoria: nazione (la nazione deve essere ben visualizzata, ecco perché il continente è un tag)
  4. tag: città

Esiste la possibilità di navigare solo tramite tag, sfruttando la gerarchia dei gruppi di tag, ad esempio:

  1. cliccando da Asia al Giappone
    1. Continenti
    2. Nazioni
  2. cliccando da Europa a Roma
    1. Continenti
    2. Nazioni
    3. Città

Non ho ancora trovato un modo per coprire questa esigenza tramite la barra di navigazione. Né ho trovato un metodo per cui i topic vengano automaticamente taggati con il nome della loro sottocategoria e della categoria genitore della sottocategoria, per rendere possibile tutto questo.

Sono a conoscenza di:

Inoltre (per iniziare :slight_smile:)

  1. come rendere visibile / quando viene mostrata la “Ricerca” nella ricerca per tag

  2. integrare la ricerca per tag nella ricerca per categoria (so che c’è una casella di ricerca in alto a destra, ma elenca anche i topic)

Infine, vorrei mostrare una mappa mondiale nella categoria “nodi-locali”, che permetta di ingrandire la località di interesse.
Spero di poter utilizzare la mappa visibile su Locations Plugin 🌍, il plugin Data Explorer Discourse Data Explorer e Custom Layouts Plugin, magari integrandoli in Discourse Category Banners.
Al momento conosco solo:

Dovrebbe apparire in qualche modo così:

Ci ho pensato un po’. In passato ho sperimentato un sistema di categorie a tre livelli e diversi sistemi di navigazione basati su tag.

categoria: nodi locali
tag: continente (da discutere se abbia senso)
sottocategoria: nazione (la nazione dovrà essere ben visualizzata, ecco perché il continente è un tag)
tag: città

Penso che tu abbia essenzialmente bisogno di un menu a tendina per i tag specifico di un tag_group, con il tag_group determinato dal contesto della categoria (per gestire diversi gruppi di città per le sottocategorie di nazione).

Per quanto riguarda l’inserimento di mappe in luoghi diversi da un elenco di argomenti o incorporate in un post, il plugin Locations dispone di una mappa componibile che può essere inserita in una pagina di categoria.

Potresti ottenere entrambe le cose in un componente del tema. Se hai bisogno di aiuto per costruire un tale componente, posso darti qualche indicazione se vuoi provarci da solo, oppure puoi assumere Pavilion per farlo per te.

Grazie mille per il feedback positivo, quindi tutto ciò che riguarda la mappa potrebbe essere gestito da noi stessi :smiley: ma dovremo scrivere un po’ di codice per personalizzare il tema come ci piace.

Per avere un’idea della roadmap per realizzare tutto ciò, puoi confermare, correggere, integrare o rispondere ai seguenti punti:

  1. :question: Assicurarsi che sia possibile creare menu a tendina per i tag infiniti (limitati solo dalla dimensione della pagina), con la selezione dei tag basata sul menu a tendina precedente.
    @angus, puoi confermare che questo è possibile in linea di principio?
  2. :question: È possibile unire la ricerca per categoria e per tag come richiesto al punto 2 nell’ultimo (terzo) elenco?
  3. :factory: Stabilire una gerarchia di tag paragonabile a quella mostrata nell’OP. Questo è fondamentale; senza di essa, il progetto è destinato a fallire.
  4. :factory: Introdurre l’auto-tagging.
    1. :question: :arrow_forward: :factory: Questo può essere realizzato solo tramite un plugin, come indicato in Topic auto tagging?
      :arrow_right: Vedi Tags: category restrictions, tag groups, relationships.
  5. :factory: Implementare l’enhanced Locations Plugin 🌍 - #429 :star_struck:

Se scegliamo questa strada, risponderò sicuramente alla generosa offerta.

Al momento è improbabile, poiché la nostra comunità sta per compiere il suo primo passo e le entrate saranno a un livello molto basso; inoltre, siamo un’organizzazione no-profit.

La risposta si trova qui: Set up structured tagging with tag groups and category tag restrictions

In linea di principio, tutto è possibile.

Ad esempio, in passato ho creato una gerarchia di categorie a 3 livelli che supporta anche intersezioni multiple di tag a livello di categoria.

Struttura delle rotte per gerarchia di categorie a 3 livelli con intersezioni multi-tag
scope "/multi" do
  constraints(tag_id: /[^\/]+?/, format: /json|rss/) do
     get '/c/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_category_show'
     get '/c/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_parent_category_category_show'
     get '/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags' => 'tags#show', as: 'tags_grandparent_category_category_show'

     Discourse.filters.each do |filter|
       get "/c/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_category_show_#{filter}"
       get "/c/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_parent_category_category_show_#{filter}"
       get "/c/:grandparent_category/:parent_category/:category/t/:tag_id/*tags/l/#{filter}" => "tags#show_#{filter}", as: "tags_grandparent_category_category_show_#{filter}"
     end
   end
end

Questa soluzione è più complessa di quanto credo tu voglia fare, ma non è sostenibile a meno che tu non sia disposto a investire molto tempo o risorse per mantenerla. È probabile che si rompa in qualche punto quando Discourse subirà aggiornamenti standard.

Con questo contesto, ci sono due cose da comprendere riguardo alla struttura delle rotte per categorie e tag in Discourse standard:

  1. Le intersezioni multi-tag sono possibili solo a livello dell’intero sito, non a livello di categoria; cioè, in Discourse standard non esistono rotte per mostrare un elenco di argomenti che appartengano a una categoria specifica e abbiano più di un tag specifico. Se volessi questa funzionalità, dovresti aggiungere la rotta.

  2. Le intersezioni tra categorie non sono possibili. Cioè, non esiste una rotta in Discourse per mostrare argomenti provenienti da due categorie allo stesso livello (ad esempio, due categorie genitore o due categorie figlie).

Puoi comunque realizzare un sistema a quattro livelli (che sembra essere il tuo obiettivo) senza apportare modifiche significative lato server.

Ad esempio, potresti utilizzare esclusivamente i tag per rappresentare i quattro livelli. https://thepavilion.io/tags/intersection/events/bug/to-do/high rappresenta l’intersezione tra i tag events, bug, to-do e high su Pavilion. Potresti avere 4 menu a tendina, uno per ciascun gruppo di tag da cui sono tratti i tag, ad esempio:

[plugin] [type] [status] [importance]

Una volta capito come strutturare la tua gerarchia all’interno della struttura delle rotte esistente di Discourse, il resto delle cose che hai elencato sono solo modifiche lato client e sono (relativamente) semplici.

  1. Gerarchia di categorie a 3 livelli

    esiste un esempio? Non so come apparirebbe né dove viene aggiunto il codice.
    Dove e come viene introdotto il grandparent_category, dato che non ci sono strumenti predefiniti per farlo tramite l’interfaccia utente.
    È in qualche modo correlato a Pavilion? Non lo è, vero? Il codice sopra modificherebbe la pagina di atterraggio delle categorie, giusto?

  2. Le intersezioni multi-tag sembrano una buona idea, anche se

    ciò potrebbe richiedere di saltare le categorie come percorso di navigazione principale e costruire una pagina di atterraggio personalizzata basata su quei tag, qualcosa che ho chiesto in Display tags by tag group - #22 by PackElend
    Questo richiederebbe un tema personalizzato, vero?

  3. Solo tag

    sì, questa è l’idea di partenza; qualsiasi altra cosa può essere modificata in una fase successiva.
    Finché ci assicuriamo un tagging corretto, tutto dovrebbe essere fattibile, a seconda del tempo e della tolleranza alla frustrazione :), vero?
    La gerarchia sarebbe la seguente:

    1. livello: nodi locali
    2. livello: continenti
    3. livello: nazioni
    4. livello: città

    All’inizio, useremo correttamente solo nodi locali come categoria e una sottocategoria per città*. Non appena ci saranno troppi nodi, passeremo a nodi locali e nazioni, sperando di creare il nostro tema per rendere la navigazione basata sui tag più accattivante (ad esempio, gli stessi box per i tag come per le categorie, come menzionato al punto 2).
    Inoltre, spero che possiamo andare d’accordo con la mia prossima richiesta di funzionalità, discussa in Locations Plugin, poiché potrebbe essere utilizzata in molti gruppi di categorie/tag :angel:.

    La cosa più importante è far funzionare il Tag automatico degli argomenti il prima possibile, altrimenti avremo un disastro prima ancora di iniziare su larga scala.
    Inoltre, dobbiamo introdurre ulteriori menu a tendina nella barra di navigazione, riempiti con tag in base alla selezione. Spero che non sia un grosso problema mescolare le sottocategorie con i menu a tendina definiti dai tag.
    È semplice ottenere qualcosa come il layout qui sotto?

    1. layout con basso numero di nodi
      image
    2. layout con numero più alto di nodi
      image
  4. Unire i box
    Ultima ma non meno importante, potrebbe essere utile: puoi unire box come:

image

Questo non funzionerà perché viola una delle restrizioni che ho menzionato.

Non puoi filtrare per due etichette all’interno di una categoria.

image

Non sono sicuro, ma penso che tu stia dando per scontato che, se sei nella categoria “nodi locali” e filtri per “continenti”, sarai anche in grado di filtrare contemporaneamente per nazioni e città. Anche questo non funzionerà.

Penso che questa sia la tua mossa migliore.

usa solo nodi locali come categoria e una sottocategoria per città

Penso che tu stia cercando di incorporare troppa pianificazione futura nei tuoi bisogni attuali.

Non appena ci saranno troppi nodi, passeremo a nodi locali e nazioni

Capisco il desiderio di impostare subito la “struttura” giusta, ma per quanto buono sia il tuo servizio, ci vorrà del tempo prima che questo diventi un problema per te, cioè anni. A quel punto, le ipotesi su cui si basa la tua comunità saranno cambiate.

Inoltre, il problema che affronterai sarà principalmente di organizzazione, piuttosto che di gerarchia. Ad esempio, potresti semplicemente raggruppare le sottocategorie delle città in una barra di navigazione modificata in base alla nazione, se lo desideri. Se volessi avere discussioni a livello “nazionale” (valuta se avrebbe senso comunque), potresti semplicemente creare una sottocategoria separata per quello.

Non hai necessariamente bisogno di una struttura gerarchica nel tuo forum di discussioni che corrisponda rigorosamente alla gerarchia amministrativa dei luoghi attorno ai quali avviene la discussione. Hai bisogno di una gerarchia che permetta ai tuoi utenti di trovare i contenuti rilevanti per loro. Capisco che stai collegando questi due concetti, ma non sono sicuro che sia giustificato. Concentrarsi troppo su questa connessione sta complicando eccessivamente il tuo pensiero sulla struttura del forum.

In sintesi, penso che tu stia investendo troppo nel rendere questa struttura simile a come vedi lo stato ideale del tuo servizio da una prospettiva di 10.000 piedi, cioè operando su una scala così grande da rendere necessario dividere le città per nazioni e continenti. Quando e se arriverai a quel punto, la natura stessa di questa decisione sarà diversa.

Hai ragione, è stato un mio errore. Ieri sera mi sono perso nei dettagli.

[1] Non è possibile aggiungere ulteriori menu a discesa?
In qualche modo questo simulerebbe una ricerca avanzata

Sono d’accordo. Sto cercando di unire un pensiero vecchio, profondamente strutturato, con l’approccio di Discourse.

ma comunque, come hai detto tu

non sono sicuro che ci sarà solo

dato che c’è un focus su progetti in aree geografiche molto limitate. Certo, alcuni argomenti avranno rilevanza nazionale o globale. Come moderare ciò/collocare tutto nel contesto giusto/rendere disponibile nell’angolo giusto di Discourse è probabilmente qualcosa in cui vale la pena imparare facendo.

Se decidiamo di affidarci solo ai tag, il tuo approccio di intersezione dei tag potrebbe essere di grande aiuto.
Prima di compiere questo passo, dobbiamo personalizzare la pagina di destinazione dei tag e dell’intersezione in modo che assomigli in qualche modo alla pagina di destinazione delle categorie. È fattibile?
Penso di rendere il layout di https://se23.life/tags basato su riquadri riempiti con “sotto-tag”, come suggerito in Higher level of granularity for category & subcategory styling - #7 by PackElend (ma lì chiedevo di migliorare i riquadri per le sottocategorie).
Inoltre, non appena si clicca su un riquadro o su un tag all’interno di un riquadro, viene attivata la query https://thepavilion.io/tags/intersection/tag1/tag2/tag3/.... Il risultato viene renderizzato e visualizzato nello stesso stile a riquadri (o in qualsiasi altro modo riteniamo appropriato).

Come vedi, sono ancora intrappolato nel percorso a più livelli, poiché è la stessa analogia quando si passa da una scala globale a una locale. Per qualsiasi nuovo utente, questo è il percorso di navigazione più naturale per raggiungere il proprio nodo locale.
Spero che tu abbia ragione e che

ma potrebbero esserci preoccupazioni che un livello si appesantisca con troppi tag. Ad esempio, avere tutte le città degli Stati Uniti o della Cina nelle sottocategorie Cina e Stati Uniti, rispettivamente, può diventare disordinato.

sono d’accordo, anche se probabilmente sto

:grin:. Questa affermazione mi aiuterà a de-emotionalizzare l’approccio di livello profondo.

puoi spiegarlo più in dettaglio o esiste già un esempio?
Questa personalizzazione della barra di navigazione è in qualche modo la stessa richiesta all’inizio di questo post, indicata da [1]

Ho creato delle bozze che visualizzano una possibile roadmap, postulando che i livelli nazione e città non possano coesistere fianco a fianco rendendo ciascuno di essi una sottocategoria dei nodi locali.

  1. La pagina di destinazione è Categorie

  2. La pagina di destinazione è Categorie, ma i nodi locali spuntano come funghi

  3. Pagina di destinazione Tag, un tema personalizzato si occupa di un layout simile a quello delle Categorie