Sollen Benutzer beim Erstellen eines Themas ein Formular ausfüllen?

Ist es möglich, dass Benutzer ein Formular ausfüllen, wenn sie ein Thema erstellen? (D.h. wenn Sie das Fenster „Thema erstellen" öffnen, erscheint darin ein Formular, das sie ausfüllen müssen.)

Wenn ich die Vorlage für Themen beim Erstellen einer Kategorie verwende, kann ich einige Hinweise eingeben, was Benutzer eingeben sollen. Das ist jedoch anders als ein Formular. Die Hinweise können gelöscht werden (so dass unerfahrene Benutzer nicht wissen, was sie damit anfangen sollen), und die Seite wird schnell überladen, wenn mehrere Hinweise auf derselben Seite stehen.

Ein Formular wäre eine sauberere und einfachere Benutzererfahrung, wenn ich möchte, dass Benutzer beim Erstellen eines Themas einige Schlüsselinformationen in ihr Thema eintragen.

Ist das möglich? Ich habe diese Theme-Komponente gefunden, aber obwohl ich noch nicht ganz sicher bin, was sie tut, glaube ich nicht, dass sie das erreicht, was ich im Sinn habe. Ich sehe auch diese Anfrage vor einigen Jahren – scheint, als ob keine Maßnahmen ergriffen wurden.

Außerdem weiß ich, dass das Plugin „Custom Wizard" es ermöglicht, ein Formular für Benutzer zum Ausfüllen zu erstellen, aber in diesem Fall muss das Formular innerhalb eines Discourse-Themas sein (damit es dann als Thema mit allen dazugehörigen Funktionen wie Tags, Antworten usw. erscheint). Und ich möchte, dass die Benutzererfahrung klar innerhalb der App bleibt (ich glaube, das Wizard-Plugin führt sie zu einer separaten Seite mit anderem Menü usw.).

3 „Gefällt mir“

Das ist in einer Theme-Komponente technisch definitiv möglich.

3 „Gefällt mir“

Ein sehr verwandtes altes Thema für alle, die interessiert sind:

1 „Gefällt mir“

Danke.

Wie denkst du, könnte das funktionieren?

Hier sind einige Ideen von mir, obwohl es noch einige Fragen gibt, die geklärt werden müssen:

[details=“Grundlagen, die es bereits gibt: Platzhalter. Aber aktuell ist es “alles oder nichts””]
Die einfachste Struktur, an die ich denken kann, um Formularverhalten nachzuahmen, wäre, wenn das “Formular” im Editor erscheint (der “d-editor”, der angezeigt wird, wenn man auf Thema erstellen klickt).

In diesem Editor könntest du verschiedene “Abschnitte” bereitstellen, wie zum Beispiel:

Name


Ort


Problem


Jeder Abschnittstitel wäre ein Platzhalter, sodass der Titel (z. B. Name) verschwindet, wenn der Benutzer darauf klickt.

Bislang ist die Einrichtung mit dem Theme-Komponente für Platzhalter-Text möglich.

Allerdings führt das noch nicht ganz zum gewünschten Formularverhalten, da die derzeit vorhandenen Platzhalter “alles oder nichts” erscheinen, wie ich weiter unten beschreibe.
[/details]


Formularähnliches Verhalten mit Platzhaltern. Aber wie greift man im Editor auf divs zu?

Um das mehr wie ein Formular zu gestalten, muss sich jeder Abschnitt unabhängig verhalten.

Derzeit ist es mit der Theme-Komponente für Platzhalter-Text “alles oder nichts” – wenn der Benutzer auf den Editor klickt, verschwinden alle Platzhalter-Titel.

Um also ein grundlegendes Formularverhalten zu haben, müssten nicht alle Titel gleichzeitig erscheinen oder verschwinden, sondern jeder Platzhalter-Abschnitt müsste sich unabhängig verhalten. Wenn der Benutzer also auf den Platzhalter “Name” klickt, verschwindet nur dieser Platzhalter, während die anderen Platzhalter (“Ort” und “Problem”) sichtbar bleiben.

Das wäre möglich, wenn jeder Platzhalter Teil eines eigenen div mit einer eindeutigen ID im Texteditor wäre. Dann könnte man mit jQuery den Platzhalter je nach Klick des Benutzers im entsprechenden Bereich ein- oder ausblenden. Dafür müssten jedoch separate divs innerhalb dessen hinzugefügt werden, was aktuell ein textarea ist – und ich bin mir nicht sicher, wie das geht.

Frage zu diesem Ansatz: Wie kann man auf divs innerhalb des Editors textarea zugreifen, um Aktionen auszulösen, wenn der Benutzer darauf klickt?


Alternative: Nutzung der vorhandenen Vorlagentext-Option. Aber wie macht man den Text nicht bearbeitbar?

Eine Alternative wäre wahrscheinlich, dass die Abschnittstitel beim Klicken des Benutzers nicht “verschwinden”. Die Abschnittstitel (Beispiel: Name, Ort und Problem) wären also Text, der auf der Seite bleibt. Um es im Vergleich zum aktuellen Standard für Themen-Vorlagen mehr wie ein Formular zu gestalten:

  1. Der Abschnittstitel-Text könnte vom Benutzer nicht bearbeitet werden (d. h. contenteditable="false")
  2. Die Abschnittstrennpunkte könnten vom Benutzer nicht entfernt werden
  3. Es müsste unterhalb des Abschnittstitels ein Bereich vorhanden sein, in dem klar ist, dass der Benutzer Text eingeben kann. Im aktuellen Standard-Vorlage müssten sie dorthin gehen, wo der Text steht, und Enter drücken, um Platz zum Schreiben zu schaffen.

Frage zu diesem Ansatz: Wie kann man Vorlagentext eingeben, (i) so dass dieser Text vom Benutzer nicht bearbeitet werden kann und (ii) klare Bereiche für die Eingabe von Informationen unter jedem Textteil vorhanden sind?


Vielleicht gibt es einen besseren Weg, um ein formularähnliches Verhalten zu erreichen?

2 „Gefällt mir“

Vermutlich müssten Sie vor dem Rendern eine Vorlage durchlaufen lassen, um anstelle eines einzigen großen Textfelds ein komplexeres Set an Eingabefeldern zu erzeugen.

Anschließend wird es nachbearbeitet, um den Text an den richtigen Stellen einzufügen.

Dafür bräuchten Sie einen Markup-Standard, um Überschriften und Texteingabepunkte zu kennzeichnen …

Das könnte eine leichtere Lösung sein, da alles im Frontend-Bereich bleibt. (Alles wird weiterhin als einzelner Textbeitrag gespeichert).

Der größte Nachteil dieses Ansatzes wäre, dass die Suche und Zusammenführung auf diese Weise viel schwieriger wäre …

Hört sich nach einem spannenden Projekt an :slight_smile:

Ich suche derzeit nach einer Lösung, die vollständig im Frontend bleibt. Das Parsen und Durchsuchen verschiedener Teile des Formulars ist derzeit nicht erforderlich und wird in den meisten Anwendungsfällen auch nicht benötigt. Es geht darum, sicherzustellen, dass Benutzer ihre Antworten konsistent eingeben.

Ich verstehe nicht, was du mit folgenden Aussagen meinst:

Ich hoffe, ich kann das noch einmal aufgreifen. Ich hoffe, es gibt eine Möglichkeit im Frontend, dass Benutzer ein Formular ausfüllen, das für sie wie ein Formular aussieht. Wenn sie also beispielsweise einen neuen Beitrag erstellen, sehen sie etwas wie:

„Name"


„Ort"


„Problem"


Das kann alles im Frontend bleiben. Ich habe keine Notwendigkeit (es wäre schön, aber im Moment nicht erforderlich), die verschiedenen Abschnitte dessen zu analysieren, was Benutzer einreichen – alles kann so eingereicht werden, wie es jetzt ist. Das Ziel ist es, eine einheitlichere Eingabe von Benutzern sicherzustellen und ihnen eine saubere Benutzeroberfläche zu bieten, wenn es verschiedene Aufforderungen gibt.

Der Unterschied zwischen diesem Ansatz und dem, was derzeit durch das Hinzufügen einer Beitrag-Vorlage verfügbar ist:
  1. Der Benutzer konnte diese Aufforderungen nicht löschen (z. B. konnte er „Name“, „Ort“ und „Problem“ nicht löschen).

  2. Idealerweise könnte ich ein Formular-ähnliches Styling hinzufügen, um dem Benutzer deutlicher zu machen, wo er eingeben soll. Dies würde eine sauberere Benutzeroberfläche für einen Benutzer ermöglichen, der einen Beitrag erstellt, falls mehrere verschiedene Aufforderungen vorhanden sind. Bei Beitrag-Vorlagen muss der Benutzer seinen eigenen Platz schaffen, um seine Antworten auf jede Aufforderung einzugeben. Zudem wirkt das Fenster zum Erstellen eines Beitrags ziemlich überladen, wenn man verschiedene Aufforderungen im Fall der Verwendung der aktuellen Beitrag-Vorlagen hat.

@sam hatte zuvor geantwortet:

Es scheint, als wäre dies tatsächlich möglich. Mein größtes Problem: Wie kann ich in einer Themenkomponente (oder einem Plugin) ändern, was im Fenster zum Erstellen eines Beitrags angezeigt wird? Im Moment scheint es wie eine Blackbox in einem iframe zu sein, wenn ich es versucht habe.

Ich weiß, dass es möglicherweise eine Möglichkeit gibt, dort hineinzukommen, da dies genau das ist, was Beitrag-Vorlagen tun und was das Platzhalter-Plugin macht. Aber ich habe noch nicht herausgefunden, wie sie das machen.

Haben Sie Tipps, was ich mit Code tun kann, um den Inhalt eines Fensters zum Erstellen eines Beitrags zu ändern?

1 „Gefällt mir“

Werfen Sie einen Blick auf den Entwicklerleitfaden für Discourse-Themes. Dort sollten Sie beginnen.

Wenn Sie den Benutzernamen und den Standort meinen, befinden sich diese im Benutzerprofil, sodass sie möglicherweise nicht benötigt werden?

Vielen Dank für deine Antwort. Ich weiß, wie man Themes und Plug-ins erstellt. Was ich hier suche, ist eine Anleitung für den spezifischen Code, um in das I-Frame des Formulars zur Themenerstellung zu gelangen. Ich brauche nicht, dass mir alles Schritt für Schritt erklärt wird, aber jede Hilfestellung wäre sehr willkommen. Ich hatte in der Vergangenheit Schwierigkeiten, einen Weg zu finden, um Änderungen an diesem Formular vorzunehmen.

Das Beispiel mit Name, Ort usw. war nur ein hypothetisches, gängiges Formular. In meinem speziellen Fall wären jedoch andere Aufforderungen erforderlich.

3 „Gefällt mir“

Ich bin auch an einer Lösung interessiert, wie z.B. einem Formular, das die Benutzer bei der Erstellung eines Themas zur Eingabe auffordert, vorzugsweise mit der Option, einige der Felder obligatorisch zu machen; einige dieser Daten können sensibel sein, und ich möchte sie in einigen benutzerdefinierten Feldern im Thema speichern.

1 „Gefällt mir“

Überprüfen Sie Introducing Experimental Form Templates