Creare sotto-argomenti?

I would like to make some topics sub-topics of others.

Say I have “Topic A”. On the Topic A page, I will put a button to “create sub topic”. That will allow the user to create a new topic, “topic b”. topic b would be a child of Topic A.

What this means, from the user experience, is:

I could also have a button on the Topic A page to “view all the child topics of Topic A”, and this would go to a list of Topic A’s child topics, such as topic b and any other topics that are children of Topic A.

What’s the best way to do this? (I’m assuming I’ll have to do it in a plugin, which is fine.)

Note I’d only be looking for one level of subtopic down, not several.

Here’s some detail on the possibilities I think could do it:

Categories (though this probably is not the best way to go)

Categories would provide similar functionality to what I have in mind, but that could get too heavy once there are a decent number of topics with subtopics (it seems like overkill to basically have a new category for each parent topic).

or

Tags

The best I can think of right now is using tagging. So that when you click “create sub topic” on Topic A, it opens up a new topic, and I programmatically add a hidden tag, like “Topic-A”, that links to Topic A. Then when you click “view all sub topics” of Topic A, it does a search for the tag “Topic-A”.

This seems pretty clean, other than the fact that there will be a lot of tags (basically one tag for each main topic, which could end up being a lot).

or

Custom Fields for Topics

Another possibility I’ve considered is to create a custom field for topics, which would be an array of the ids of that topic’s sub-topics. This also could work, but would probably be slightly more complicated to code.

For example, I’d have to update the main topic’s custom field only after a subtopic is created; and, I’d have to create a new kind of search–searching for all the topics within the main topic’s custom field array–instead of just using the pre-built tag search functionality.

Is there another solution I’m missing?

2 Mi Piace

I see an other solution that might work, with no heavy code work.

With the custom wizard plugin, you may do multiple actions in one procedure. So in that case, you would ask the user to write their sub-topic with a wizard that would:

  • Create a new topic for the subtopic
  • Create a replay in the main topic linking the subtopic.

With some custom CSS for all the main posts (you can add a CSS class to select them with a category or a tag), you can modify the replies appearance to match what you have in mind. You might also find a way with the wizard to add a parameter to the replies that will allow you to select only the automatic replies.

If you don’t like the reply solution, I think the custom wizard may also add the tag on the created sub-topic.

1 Mi Piace

I hadn’t thought of that. Thanks. The key piece I am missing is something in the subtopic that links back to the main topic. Such as a tag (“Topic-A”) associated with the subtopic.

Are you thinking that the wizard would, on submission, send an API call to create the tag and link it to the subtopic? (I’m not that familiar with the wizard plugin.)

I also think one limit of the wizard plugin is that it opens its own page, that does does not have the normal header of my site–in other words, I think any page with the wizard will look pretty different than the rest of the app, which could be confusing in this case for users.

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

1 Mi Piace

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!

1 Mi Piace