Unterthemen erstellen?

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 „Gefällt mir“

Ich sehe eine andere Lösung, die funktionieren könnte, ohne viel Code-Arbeit.

Mit dem Custom Wizard-Plugin können Sie mehrere Aktionen in einem Ablauf durchführen. In diesem Fall würden Sie den Benutzer auffordern, sein Unterthema mit einem Assistenten zu erstellen, der:

  • Ein neues Thema für das Unterthema erstellt
  • Eine Antwort im Hauptthema erstellt, die auf das Unterthema verlinkt.

Mit etwas benutzerdefiniertem CSS für alle Hauptbeiträge (Sie können eine CSS-Klasse hinzufügen, um sie anhand einer Kategorie oder eines Tags auszuwählen), können Sie das Erscheinungsbild der Antworten so anpassen, wie Sie es im Sinn haben. Vielleicht finden Sie auch mit dem Assistenten eine Möglichkeit, den Antworten einen Parameter hinzuzufügen, mit dem Sie nur die automatischen Antworten auswählen können.

Wenn Ihnen die Antwortlösung nicht gefällt, denke ich, dass der benutzerdefinierte Assistent auch das Tag für das erstellte Unterthema hinzufügen kann.

1 „Gefällt mir“

Das hätte ich nicht gedacht. Danke. Das entscheidende Element, das mir fehlt, ist etwas im Unterthema, das auf das Hauptthema verweist. Zum Beispiel ein Tag („Topic-A“), das dem Unterthema zugeordnet ist.

Meinen Sie, dass der Assistent beim Absenden einen API-Aufruf senden würde, um das Tag zu erstellen und mit dem Unterthema zu verknüpfen? (Ich bin mit dem Assistenten-Plugin nicht so vertraut.)

Ich denke auch, dass eine Einschränkung des Assistenten-Plugins darin besteht, dass er eine eigene Seite öffnet, die nicht über die normale Kopfzeile meiner Website verfügt – mit anderen Worten: Jede Seite mit dem Assistenten wird sich ziemlich stark vom Rest der App unterscheiden, was in diesem Fall für die Benutzer verwirrend sein könnte.

Ich habe gerade darüber nachgedacht, dass ich mir auch eine Ebene von Unterthemen wünschen würde. Dies könnte eine Ebene der Verschachtelung/Hierarchie erreichen und gleichzeitig die Benutzeroberfläche übersichtlich halten, sodass es keine Ansammlung von verschachtelten Konversationen gibt.

Beispiele, wie ich es verwenden könnte:

  • Erstellen Sie ein Thema für eine Episode/einen Beitrag/einen Artikel und lassen Sie die Leute Unterthemen basierend auf ihren Reaktionen erstellen.

  • Erstellen Sie ein Thema einer Frage und lassen Sie die Leute dann Unterthemen mit ihren eigenen Antworten erstellen (Bonus für die Option, ein Unterthema pro Person zu beschränken).

Haben Sie Fortschritte bei der Erstellung eines Plugins gemacht oder herausgefunden, wie dies mit den aktuellen Discourse-Funktionen möglich ist?

Der einzige Weg, wie ich es gesehen habe, war die Verwendung von Topic-Benutzerdefinierten Feldern. Zum Beispiel könnte das Unterthema ein benutzerdefiniertes Feld haben, das zurück zum Hauptthema verknüpft ist. Dann können Sie nach allen Themen suchen, bei denen dieses Hauptthema als Wert des benutzerdefinierten Feldes angegeben ist. Ich habe noch kein vollständig implementiertes Plugin, aber ich konnte es in der Entwicklung im Grunde funktionsfähig machen, indem ich Code wie den hier erwähnten verwendet habe: Retrieve Topics based on custom field? - #12 by JQ331

1 „Gefällt mir“

Ja, ich stelle mir vor, wenn man ein benutzerdefiniertes Feld für Themen wie „Themen-Elternteil“ oder etwas Ähnliches erstellen würde, gäbe es viele Möglichkeiten, dies zu nutzen. Ich werde mir den Link, den Sie geteilt haben, genauer ansehen und hoffentlich dabei etwas Ruby lernen. Danke!

1 „Gefällt mir“