Creare sotto-argomenti?

Vorrei rendere alcuni argomenti sottoparagrafi di altri.

Immaginiamo di avere “Argomento A”. Nella pagina di Argomento A, inserirò un pulsante per “crea sottoparagrafo”. Questo permetterà all’utente di creare un nuovo argomento, “argomento B”, che sarà un figlio di Argomento A.

Dal punto di vista dell’esperienza utente, questo significa:

Potrei anche avere un pulsante nella pagina di Argomento A per “visualizza tutti i sottoparagrafi di Argomento A”, che porterebbe a un elenco dei sottoparagrafi di Argomento A, come argomento B e qualsiasi altro argomento figlio di Argomento A.

Qual è il modo migliore per farlo? (Suppongo di doverlo realizzare tramite un plugin, il che va bene.)

Nota: mi interesserà solo un livello di sottoparagrafo, non più livelli.

Ecco alcuni dettagli sulle possibilità che ritengo possano funzionare:

Categorie (anche se probabilmente non è la soluzione migliore)

Le categorie fornirebbero funzionalità simili a quelle che ho in mente, ma potrebbero diventare troppo pesanti una volta che ci saranno un numero ragionevole di argomenti con sottoparagrafi (sembra eccessivo creare essenzialmente una nuova categoria per ogni argomento principale).

o

Tag

La soluzione migliore che riesco a pensare al momento è l’uso dei tag. Quindi, quando si clicca su “crea sottoparagrafo” in Argomento A, si apre un nuovo argomento e aggiungo programmaticamente un tag nascosto, come “Argomento-A”, che fa riferimento ad Argomento A. Quando si clicca su “visualizza tutti i sottoparagrafi” di Argomento A, viene eseguita una ricerca per il tag “Argomento-A”.

Questa soluzione sembra piuttosto pulita, a parte il fatto che ci saranno molti tag (essenzialmente un tag per ogni argomento principale, il che potrebbe diventare molto).

o

Campi personalizzati per gli argomenti

Un’altra possibilità che ho considerato è creare un campo personalizzato per gli argomenti, che sarebbe un array contenente gli ID dei sottoparagrafi di quell’argomento. Anche questa soluzione potrebbe funzionare, ma sarebbe probabilmente leggermente più complessa da implementare.

Ad esempio, dovrei aggiornare il campo personalizzato dell’argomento principale solo dopo la creazione di un sottoparagrafo; inoltre, dovrei creare un nuovo tipo di ricerca: cercare tutti gli argomenti contenuti nell’array del campo personalizzato dell’argomento principale, invece di utilizzare semplicemente la funzione di ricerca dei tag già integrata.

Esiste un’altra soluzione che non sto considerando?

Vedo un’altra soluzione che potrebbe funzionare, senza richiedere un pesante lavoro di codice.

Con il plugin Custom Wizard, puoi eseguire più azioni in un’unica procedura. In questo caso, potresti chiedere all’utente di scrivere il proprio sottotema tramite una procedura guidata che:

  • Crea un nuovo argomento per il sottotema
  • Crea una risposta nell’argomento principale con un link al sottotema.

Con un po’ di CSS personalizzato per tutti i post principali (puoi aggiungere una classe CSS per selezionarli in base a una categoria o a un tag), puoi modificare l’aspetto delle risposte per adattarlo a ciò che hai in mente. Potresti anche trovare un modo, tramite la procedura guidata, di aggiungere un parametro alle risposte che ti permetta di selezionare solo quelle automatiche.

Se non ti piace la soluzione delle risposte, penso che la procedura guidata personalizzata possa anche aggiungere il tag al sottotema creato.

Non ci avevo pensato. Grazie. Il pezzo fondamentale che mi manca è qualcosa nel sottotema che rimandi al tema principale. Ad esempio, un tag (“Topic-A”) associato al sottotema.

Stai pensando che, al momento dell’invio, la procedura guidata invii una chiamata API per creare il tag e collegarlo al sottotema? (Non conosco molto bene il plugin della procedura guidata.)

Penso anche che uno dei limiti del plugin della procedura guidata sia che apre una pagina propria, priva dell’intestazione normale del mio sito: in altre parole, credo che qualsiasi pagina con la procedura guidata appaia piuttosto diversa dal resto dell’applicazione, il che potrebbe creare confusione per gli utenti in questo caso.

Stavo giusto pensando che mi piacerebbe anche un livello di sotto-argomenti. Questo potrebbe ottenere un livello di annidamento/gerarchia, mantenendo anche l’interfaccia pulita in modo che non sia un mucchio di conversazioni annidate.

Esempi di come potrei usarlo:

  • Creare un argomento per un episodio/post/articolo e far creare alle persone sotto-argomenti basati sulle loro reazioni.

  • Creare un argomento di una domanda e poi far creare alle persone sotto-argomenti con le proprie risposte (bonus per l’opzione di limitare un sotto-argomento per persona)

Hai fatto progressi nella creazione di un plugin o hai capito come farlo con le attuali funzionalità di Discourse?

L’unico modo che ho visto per farlo è stato utilizzare campi personalizzati per gli argomenti. Ad esempio, il sottoargomento potrebbe avere un campo personalizzato che rimanda all’argomento principale. Quindi è possibile eseguire una ricerca di tutti gli argomenti con quell’argomento principale come valore del campo personalizzato. Non ho ancora un plugin completamente implementato, ma sono riuscito a farlo funzionare a livello base in fase di sviluppo utilizzando codice come quello che ho menzionato qui: Retrieve Topics based on custom field? - #12 by JQ331

Ah sì, immagino che se si creasse un campo personalizzato per argomento di “topic-parent” o qualcosa di simile, allora ci sarebbero molti modi per sfruttarlo. Darò un’occhiata più approfondita al link che hai condiviso e, si spera, imparerò un po’ di Ruby lungo la strada. Grazie!