Unterthemen erstellen?

Ich möchte einige Themen als Unterthemen anderer Themen einrichten.

Nehmen wir an, ich habe „Thema A“. Auf der Seite von Thema A werde ich einen Button zum „Erstellen eines Unterthemas“ einfügen. Dadurch kann der Benutzer ein neues Thema, „Thema B“, erstellen. Thema B wäre dann ein Kindthema von Thema A.

Das bedeutet aus Sicht der Benutzererfahrung:

Ich könnte auf der Seite von Thema A auch einen Button „Alle Kindthemen von Thema A anzeigen“ einfügen. Dieser würde zu einer Liste der Kindthemen von Thema A führen, wie zum Beispiel Thema B und alle anderen Themen, die Kinder von Thema A sind.

Was ist der beste Weg, dies umzusetzen? (Ich gehe davon aus, dass ich dies in einem Plugin lösen muss, was für mich in Ordnung ist.)

Hinweis: Ich suche nur nach einer Ebene von Unterthemen, nicht nach mehreren Ebenen (several).

Hier sind einige Details zu den Möglichkeiten, die ich in Betracht ziehe:

Kategorien (obwohl dies wahrscheinlich nicht der beste Weg ist)

Kategorien würden eine ähnliche Funktionalität bieten, wie ich sie im Sinn habe. Allerdings könnte dies zu aufwendig werden, sobald eine beträchtliche Anzahl von Themen mit Unterthemen vorhanden ist (es scheint übertrieben, im Grunde für jedes übergeordnete Thema eine neue Kategorie zu erstellen).

or

Tags

Das Beste, was mir derzeit einfällt, ist die Verwendung von Tags. Wenn du also auf „Unterthema erstellen“ bei Thema A klickst, wird ein neues Thema geöffnet, und ich füge programmatisch ein verstecktes Tag hinzu, wie zum Beispiel „Thema-A“, das auf Thema A verlinkt. Wenn du dann auf „Alle Unterthemen von Thema A anzeigen“ klickst, wird nach dem Tag „Thema-A“ gesucht.

Das wirkt ziemlich sauber, abgesehen davon, dass es sehr viele Tags geben wird (im Grunde eines pro Hauptthema, was sehr viele werden könnten).

or

Benutzerdefinierte Felder für Themen

Eine weitere Möglichkeit, die ich in Betracht gezogen habe, besteht darin, ein benutzerdefiniertes Feld für Themen zu erstellen, das ein Array der IDs der Unterthemen dieses Themas enthält. Das könnte ebenfalls funktionieren, wäre aber wahrscheinlich etwas aufwendiger zu programmieren.

Zum Beispiel müsste ich das benutzerdefinierte Feld des Hauptthemas erst aktualisieren, nachdem ein Unterthema erstellt wurde. Außerdem müsste ich eine neue Art von Suche implementieren – die Suche nach allen Themen innerhalb des benutzerdefinierten Feld-Arrays des Hauptthemas – anstatt einfach die vorgefertigte Tag-Suchfunktion zu nutzen.

Gibt es noch eine andere Lösung, die ich übersehen habe?

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.

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

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!