Diese Anleitung erklärt, wie man benutzerdefinierte Benutzerfelder in Discourse erstellt und konfiguriert, einschließlich deren Hinzufügen zum Anmeldeformular, zu Benutzerprofilen und zum Benutzerverzeichnis.
Erforderliches Benutzerniveau: Administrator
Benutzerdefinierte Benutzerfelder ermöglichen es Ihnen, zusätzliche Informationen von Ihren Benutzern über die standardmäßigen Profilfelder hinaus zu sammeln. Diese Felder können auf Benutzerkarten, Benutzerzusammenfassungsseite und sogar über das Data Explorer Plugin abgerufen werden. Diese Anleitung führt Sie durch den Prozess der Erstellung und Konfiguration benutzerdefinierter Benutzerfelder.
Ein Benutzerfeld hinzufügen
Gehen Sie zu Admin > Community > Benutzerfelder (discourse.example.com/admin/config/user-fields).
Wenn Sie noch keine Benutzerfelder erstellt haben, sehen Sie diesen Bildschirm:
Verwenden Sie es für Fragen, bei denen Benutzer mehrere Antworten aus einer Reihe von Optionen auswählen können (z. B. „Welche Themen interessieren Sie?“)
Wird als Eingabefeld für Mehrfachauswahl angezeigt
Optionen werden auf die gleiche Weise wie bei Dropdown-Feldern konfiguriert
Den Feldnamen und die Beschreibung festlegen
Feldname: Wird vor der Eingabe im Anmeldeformular und im Benutzerprofil angezeigt
Feldbeschreibung: Wird nach der Eingabe angezeigt, um Benutzern beim Ausfüllen des Feldes zu helfen
Sowohl der Feldname als auch die Beschreibung sind erforderlich, um ein Feld zu speichern.
Hier sehen benutzerdefinierte Felder im Anmeldeformular aus:
Optional – Optionale Felder können von Benutzern leer gelassen werden
Für alle Benutzer – Wenn ein Feld von allen Benutzern benötigt wird, werden alle Konten, einschließlich der angemeldeten Benutzer, gezwungen, es auszufüllen. Dies ist sehr nützlich für Fälle wie die Zustimmung zu Nutzungsbedingungen (ToS).
Bei der Anmeldung – Alle neuen Konten müssen das Feld ausfüllen.
Zusätzlich finden Sie am Ende des Erstellungsformulars diese Kontrollkästchen für Präferenzen:
Nach der Anmeldung bearbeitbar: Ermöglicht Benutzern das Aktualisieren des Feldes auf ihrer Profilseite
Im öffentlichen Profil anzeigen: Zeigt den Feldwert auf der Zusammenfassungsseite des Benutzers an
Auf Benutzerkarte anzeigen: Zeigt den Feldwert auf der Benutzerkarte an
Durchsuchbar: Ermöglicht die Suche nach Benutzern basierend auf dem Wert dieses Feldes im Benutzerverzeichnis
Im Anmeldeformular anzeigen: Steuert, ob das Feld im Anmeldeformular angezeigt wird. Dies ist automatisch aktiviert (und kann nicht deaktiviert werden), wenn die Feldanforderung „Für alle Benutzer“ oder „Bei der Anmeldung“ ist oder wenn das Feld nach der Anmeldung nicht bearbeitbar ist.
Im öffentlichen Profil anzeigen
Wenn diese Option aktiviert ist, wird der Feldwert auf der Profilseite des Benutzers angezeigt:
Hmm. Das ist interessant. Ich glaube, es gibt eine Lösung für das Problem Missing images at Meta.discourse.org, also wird es hoffentlich dadurch behoben.
Gibt es eine Einstellung, die ich ändern muss, um die maximale Länge eines benutzerdefinierten Benutzerfelds anzugeben? Im Moment kann ich in diesem Feld „Test“, das ich als Testbenutzerfeld erstellt habe, keine einzige Zeichen in meinem Benutzerprofil eingeben (nicht einmal „Test“, wie gezeigt).
Da URLs Text sind, funktioniert das Textfeld technisch gesehen, @Vaping_Community. Möglicherweise fragen Sie jedoch nach zusätzlichen Details wie Wertvalidierung oder Ähnlichem.
Sie könnten ein #feature-Thema mit Ihren Vorstellungen durchsuchen oder erstellen.
Beachten Sie, dass Sie HTML-Syntax verwenden müssen, wenn Sie einen Link in benutzerdefinierte Benutzerfelder einbetten möchten! <a> href="url">Linktext</a>
Um beispielsweise Community-Richtlinien / -Regeln anzuerkennen:
Kann ich einen benutzerdefinierten Anspruch aus meinem Auth0 SSO mit einem benutzerdefinierten Feld verknüpfen? Derzeit gibt der Benutzer Feldinformationen in Auth0 ein und muss sie dann beim Registrieren ein zweites Mal eingeben. Ich möchte, dass der Wert nach Möglichkeit übernommen wird.
Gibt es eine Möglichkeit, den Feldnamen in der DB zu überprüfen? Wir haben zum Beispiel ein Feld für den Vornamen. Ich habe custom.firstname, custom.first_name und custom.firstName ausprobiert, aber keines davon führte dazu, dass die Felder auf dem Anmeldebildschirm ausgefüllt wurden.
Ich habe die Fehlerprotokolle überprüft, um zu bestätigen, dass die Token-Felder wie oben gezeigt eingehen.
Die Syntax muss custom.user_field_x lauten, wobei x die numerische Feld-ID ist, die unter /admin/config/user-fields/{x}/edit angezeigt wird.
Diese Zuordnungsfunktion ist im Auth0-Plugin nicht direkt verfügbar.
Dennoch gibt es noch Möglichkeiten, das von Ihnen beschriebene zu erreichen:
Erstellen einer Theme-Komponente. Sie können ein kleines Frontend-Skript hinzufügen, das ein benutzerdefiniertes Discourse-Feld automatisch mit einem bereits in Auth0 gespeicherten Wert synchronisiert. Wenn sich ein Benutzer beispielsweise anmeldet und das Feld leer ist, kann das Skript einen sicheren Endpunkt (eine kleine Cloud-Funktion) aufrufen, der den Feldwert von Auth0 abruft und das Discourse-Profil über die API aktualisiert.
Verwendung von Automatisierungstools. Sie könnten auch externe Automatisierungsdienste wie Zapier oder Make verwenden, um diese Synchronisierung außerhalb von Discourse durchzuführen. Der Vorteil ist, dass Sie keinen Code schreiben/pflegen müssen, sondern nur für den Drittanbieterdienst bezahlen.
Benutzerdefinierte Entwicklung. Wir können das Auth0-Plugin selbst erweitern, um benutzerdefinierte Claims nativ in Benutzerfelder bei der Anmeldung zu integrieren, oder ein benutzerdefiniertes Plugin erstellen, das mit dem Auth0-Plugin zusammenarbeitet.
Ein klarer Nachteil des Theme-Komponenten-Ansatzes ist, dass Sie benutzerdefinierten Code selbst schreiben und pflegen müssten, während Sie gleichzeitig auf Sicherheit achten müssten, um potenzielle Fehler oder Schwachstellen zu vermeiden. Ehrlich gesagt, würde ich diese Lösung für eine Produktionsseite wie Ihre nicht empfehlen.
Wenn ich in Ihrer Position wäre, würde ich mich eher für die zweite Option entscheiden, Drittanbieter-Tools zu verwenden, oder eine Funktionsanfrage oder eine Anfrage für benutzerdefinierte Arbeiten (abhängig von der Bewertung unserer Projektmanager) in Erwägung ziehen, um das Auth0-Plugin selbst zu verbessern.
Wenn Sie daran interessiert sind, die letzte Option zu erkunden, können wir die Diskussion privat fortsetzen.
Ich frage mich, ob es eine weniger umständliche Möglichkeit gibt, eine lange Liste von Benutzerfeldern neu anzuordnen, als jedes Mal auf die kleinen Pfeile zu klicken, um sie einzeln nach oben oder unten zu verschieben…?
In der Übersicht der Benutzerfeldliste kann ich nicht erkennen, wie Felder unterschieden werden können, die bei der Registrierung vorhanden und obligatorisch sind (z. B. Je suis… Pays) und solche, die im Registrierungsformular vorhanden, aber optional sind (Mes attentes). Übersehe ich etwas oder ist das eine Nachlässigkeit? Es ist ziemlich umständlich, das Feld bearbeiten zu müssen, um zu sehen, ob es optional ist oder nicht. (Ich bin mir nicht sicher, ob dies der richtige Ort dafür ist, wusste nicht, wo ich es platzieren sollte.)
Vielleicht kann die JSON, die die Daten liefert, ein wenig helfen. Sie ist nicht schön, aber Sie können sich /admin/config/user-fields.json ansehen und etwas Ähnliches wie
Oh, das ist ehrlich gesagt viel einfacher für mich zu bearbeiten!
Bedeutet das, ich kann einfach diese Datei bearbeiten und bin damit fertig? Existiert sie irgendwo so auf meinem Server, und wo finde ich sie?