Erstellen und Konfigurieren benutzerdefinierter Benutzerfelder

:bookmark: 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.

:person_raising_hand: 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

  1. Gehen Sie zu Admin > Community > Benutzerfelder (discourse.example.com/admin/config/user-fields).

  2. Wenn Sie noch keine Benutzerfelder erstellt haben, sehen Sie diesen Bildschirm:

  3. Klicken Sie auf die Schaltfläche „Benutzerfeld hinzufügen“, um ein neues Feld hinzuzufügen.

Einen Feldtyp auswählen

Der Feldtyp bestimmt das Eingabefeld, das die Benutzer im Anmeldeformular sehen. Wählen Sie basierend auf der Art der Informationen, die Sie sammeln:

Textfeld

  • Verwenden Sie es für kurze Fragen mit vielen möglichen Antworten (z. B. „Für welche Firma arbeiten Sie?“)
  • Wird als einzeiliges HTML-Texteingabefeld angezeigt

Textarea

  • Verwenden Sie es für Fragen, die längere Antworten mit mehreren Zeilen erfordern können (z. B. „Erzählen Sie uns etwas über sich“)
  • Wird als mehrzeiliges HTML-Textarea-Eingabefeld angezeigt

Datum

  • Verwenden Sie es, um Datumswerte zu erfassen (z. B. „Was ist Ihr Geburtsdatum?“)
  • Wird als ein Datumsauswahleingabefeld angezeigt

Bestätigung

Dropdown

  • Verwenden Sie es für Fragen mit einer festgelegten Anzahl möglicher Antworten (z. B. „Was ist Ihr Geschlecht?“)
  • Wird als HTML-Auswahlfeld angezeigt

Um Optionen für ein Dropdown-Feld hinzuzufügen:

  1. Klicken Sie auf die Options-Eingabe
  2. Geben Sie eine Antwort ein und klicken Sie auf „Erstellen“
  3. Wiederholen Sie dies für zusätzliche Optionen

Die vervollständigten Optionen sollten in etwa so aussehen:

Mehrfachauswahl (Multiselect)

  • 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

:information_source: Sowohl der Feldname als auch die Beschreibung sind erforderlich, um ein Feld zu speichern.

Hier sehen benutzerdefinierte Felder im Anmeldeformular aus:

Benutzerfeldoptionen konfigurieren

Feldebenen

  • 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:

Auf Benutzerkarte anzeigen

Wenn diese Option aktiviert ist, wird der Feldwert auf der Benutzerkarte angezeigt:

Durchsuchbar

Wenn diese Option aktiviert ist, können Sie Benutzer basierend auf ihren benutzerdefinierten Feldwerten durchsuchen:

Felder speichern und bearbeiten

  1. Klicken Sie auf „Speichern“, um das Feld zur Liste der Benutzerfelder Ihrer Website hinzuzufügen
  2. Um ein Feld zu bearbeiten, klicken Sie in der Liste auf die Schaltfläche „Bearbeiten“ daneben
  3. Um ein Feld zu löschen, klicken Sie auf das Auslassungsmenü (⋮) daneben und wählen Sie „Löschen“

Benutzerdefinierte Felder zum Benutzerverzeichnis hinzufügen

  1. Gehen Sie zum Benutzerverzeichnis
  2. Klicken Sie auf das Schraubenschlüsselsymbol:

  1. Aktivieren Sie die benutzerdefinierten Benutzerfelder, die Sie anzeigen möchten
  2. Klicken Sie auf „Speichern“

Die ausgewählten benutzerdefinierten Felder werden nun in der Tabelle des Benutzerverzeichnisses angezeigt:

39 „Gefällt mir“
Any Plugins/Easy Mods for an Extended User Profile
Add introductory text for sign-up
Setting Security Parameters: Log-In, Read-Only, Protected Groups
Theme-Component v Plugin: What's the difference
User preference on theme components
Private custom user fields...?
Users self-select Category on Registration... is it possible?
Can we implement a system for user remarks during registration for admin review?
User Field Prompt
New user reviews: admin assignment and logging of progress
User customizable theme components (how-to)
Add users to groups on signup
Announcing - Gender Pronouns Userfield on Meta
Add a custom per-user setting in a plugin
Welcome questions on the first screen for bio
How to add min or max values in custom fields?
Custom user fields not available in api
Grant Custom Badge Upon Reading ToS
Required vs. optional sign-up fields
Add users to groups through custom field automation
Terms of Service Checkbox
Hidden User Fields
Social Features
Where in Discourse can users publicly share PII?
Linking "static" information about member to topic posted
Using Discourse as a social media platform
Custom user post display
Disable account confirm emails when creating users via API
Links in additional fields
Clickable Social Icon Links on Profile
Extend Existing Controller?
Requiring acceptance of terms and conditions
"Fake" OAuth Provider?
Extend Existing Controller?
This freaking software works so well I can’t even
Allow users to block keywords
Customize Your Site Branding
Restrict the users to post in the groups who haven't uploaded their profile picture
Adding non-visible user custom fields to the API
Seeking Advice: making a discourse forum hyper local
Add custom fields to signup and login
Can add short message to verify? Just input phone number can sign up
Add terms when make new topic
Export custom field for users in discourse hosted forum
Customizing Sign-up and Log in
Grouping poll results by user custom field
Disclaimer for tutorials
How to add custom logic input on the signup page?
Terms of service changes in Discourse platform

Ich glaube, unter diesen Überschriften fehlen zwei Bilder:

Ich bin mir nicht sicher, ob es mit Fehlende Bilder auf Meta.discourse.org zusammenhängt – ich werde auch dort posten.

Kann ich diese Bilder sehen? (auch in einem anonymen Fenster)

1 „Gefällt mir“

Ich kann die nicht sehen

Aber das zweite funktioniert in meinem Zitat.

Bearbeiten

1 „Gefällt mir“

Interessanterweise sehe ich das zweite Bild im Zitat, aber nicht im Originalbeitrag^^

1 „Gefällt mir“

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. :crossed_fingers:

2 „Gefällt mir“

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).

Ich hätte gerne einen Feldtyp: Link / URL, ist das möglich?

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. :slight_smile:

3 „Gefällt mir“

Gibt es Pläne, mehrzeilige/Composer für benutzerdefinierte Benutzerfelder zu ermöglichen? :folded_hands:

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:

1 „Gefällt mir“

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.

Es ist möglich, ja:

Innerhalb Ihres SSO-Endpunkts haben Sie die Möglichkeit, den Claim der Nutzlast zuzuordnen, z. B.:

const ssoPayload = {
  nonce: nonce,
  email: user.email,
  external_id: user.sub,
  username: user.nickname,
  name: user.name,
  add_groups: a_custom_group,
  'custom.user_field_1': user['https://yourdomain.com/company_id'],
  'custom.user_field_2': [etc...]
3 „Gefällt mir“

Danke @dax

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.

Wenn ich mir den Code genauer ansehe, ist dies nur für Discourse Connect SSO? Wir verwenden das Auth0-Plugin

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.

1 „Gefällt mir“

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…? :face_with_peeking_eye:

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

    {
      "id": 18,
      "name": "Age",
      "description": "How old are you?",
      "field_type": "text",
      "editable": true,
      "required": false,
      "requirement": "optional",
      "show_on_profile": false,
      "show_on_user_card": false,
      "show_on_signup": false,
      "searchable": false,
      "position": 9
    },
    {
      "id": 17,
      "name": "pets",
      "description": "choose your favourite",
      "field_type": "dropdown",
      "editable": true,
      "required": false,
      "requirement": "optional",
      "show_on_profile": false,
      "show_on_user_card": false,
      "show_on_signup": false,
      "searchable": false,
      "position": 10,
      "options": [
        "cat",
        "mouse",
        "dog"
      ]
    },

bekommen.

Aber natürlich ist das nicht so schön wie die Informationen in der Benutzeroberfläche.

1 „Gefällt mir“

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? :heart_eyes::heart_eyes::heart_eyes: