Benutzerdefinierte Felder erstellen und konfigurieren

:bookmark: Dieser Leitfaden erklärt, wie du benutzerdefinierte Benutzerfelder in Discourse erstellst und konfigurierst, einschließlich der Hinzufügung zu den Anmeldeformularen, Benutzerprofilen und dem Benutzerverzeichnis.

:person_raising_hand: Erforderliche Benutzerebene: Administrator

Benutzerdefinierte Benutzerfelder ermöglichen es dir, zusätzliche Informationen von deinen Benutzern zu sammeln, die über die Standardprofilfelder hinausgehen. Diese Felder können auf Benutzerkarten, Benutzerübersichtsseiten und sogar über das Data-Explorer-Plugin abgerufen werden. Dieser Leitfaden führt dich durch den Prozess der Erstellung und Konfiguration benutzerdefinierter Benutzerfelder.

Hinzufügen eines Benutzerfelds

  1. Gehe zu Admin > Community > User Fields (discourse.example.com/admin/config/user-fields).

  2. Falls du noch keine Benutzerfelder erstellt hast, siehst du diesen Bildschirm:

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

Auswahl des Feldtyps

Der Feldtyp bestimmt das Eingabefeld, das Benutzer im Anmeldeformular sehen. Wähle basierend auf der Art der gesammelten Informationen:

Textfeld

  • Verwende für kurze Fragen mit vielen möglichen Antworten (z. B. „Für welches Unternehmen arbeitest du?“)
  • Wird als einzeiliges HTML-Texteingabefeld angezeigt

Textbereich

  • Verwende für Fragen, die längere, mehrzeilige Antworten erfordern können (z. B. „Erzähl uns etwas über dich“)
  • Wird als mehrzeiliges HTML-Textbereichs-Eingabefeld angezeigt

Datum

  • Verwende zum Sammeln von Datumsangaben (z. B. „Was ist dein Geburtsdatum?“)
  • Wird als Datumsauswahl-Eingabefeld angezeigt

Bestätigung

  • Verwende für Ja/Nein-Fragen (z. B. „Möchtest du dich für unseren Newsletter anmelden?“)
  • Wird als HTML-Checkbox angezeigt
  • Füge wichtige Links hinzu, die Benutzer bestätigen müssen, z. B. per HTML:
    Ich stimme zu, <a href="https://meta.discourse.org/guidelines">die Community-Richtlinien</a> zu lesen und einzuhalten.

Dropdown

  • Verwende für Fragen mit einer festen Anzahl möglicher Antworten (z. B. „Was ist dein Geschlecht?“)
  • Wird als HTML-Auswahlfeld angezeigt

So fügst du Optionen für ein Dropdown-Feld hinzu:

  1. Klicke auf das Optionseingabefeld
  2. Gib eine Antwort ein und klicke auf „Erstellen“
  3. Wiederhole dies für zusätzliche Optionen

Die fertigen Optionen sollten ungefähr so aussehen:

Mehrfachauswahl

  • Verwende für Fragen, bei denen Benutzer mehrere Antworten aus einer Reihe von Optionen auswählen können (z. B. „Welche Themen interessieren dich?“)
  • Wird als Mehrfachauswahl-Eingabefeld angezeigt
  • Optionen werden auf dieselbe Weise wie bei Dropdown-Feldern konfiguriert

Festlegen des Feldnamens und der Beschreibung

  • Feldname: Wird vor dem Eingabefeld im Anmeldeformular und im Benutzerprofil angezeigt
  • Feldbeschreibung: Wird nach dem Eingabefeld angezeigt, um Benutzern bei der Ausfüllung des Feldes zu helfen

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

So erscheinen benutzerdefinierte Felder im Anmeldeformular:

Konfiguration der Optionen für Benutzerfelder

Feldanforderungen

  • Optional - Optionale Felder können von Benutzern leer gelassen werden
  • Für alle Benutzer - Wenn ein Feld von allen Benutzern erforderlich ist, müssen alle Konten, einschließlich angemeldeter Benutzer, es ausfüllen. Dies ist sehr nützlich für Fälle wie die Anforderung der Nutzungsbedingungen (ToS).
  • Bei der Anmeldung - Alle neuen Konten müssen das Feld ausfüllen.

Zusätzlich findest du am unteren Rand des Erstellungsfelds diese Präferenz-Checkboxen:

  • Nach der Anmeldung bearbeitbar: Erlaubt Benutzern, das Feld von ihrer Profilseite aus zu aktualisieren
  • Auf öffentlichem Profil anzeigen: Zeigt den Feldwert auf der Benutzerübersichtsseite an
  • Auf Benutzerkarte anzeigen: Zeigt den Feldwert auf der Benutzerkarte an
  • Durchsuchbar: Ermöglicht die Suche nach Benutzern basierend auf dem Wert dieses Felds im Benutzerverzeichnis
  • Im Anmeldeformular anzeigen: Steuert, ob das Feld im Anmeldeformular angezeigt wird. Dies wird 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 bearbeitet werden kann.

Auf öffentlichem Profil anzeigen

Wenn aktiviert, wird der Feldwert auf der Profilseite des Benutzers angezeigt:

Auf Benutzerkarte anzeigen

Wenn aktiviert, wird der Feldwert auf der Benutzerkarte angezeigt:

Durchsuchbar

Wenn aktiviert, kannst du nach Benutzern basierend auf ihren benutzerdefinierten Feldwerten suchen:

Speichern und Bearbeiten von Feldern

  1. Klicke auf „Speichern“, um das Feld zur Liste der Benutzerfelder deiner Site hinzuzufügen
  2. Um ein Feld zu bearbeiten, klicke auf die Schaltfläche „Bearbeiten“ daneben in der Liste
  3. Um ein Feld zu löschen, klicke auf das Ellipsenmenü (⋮) daneben und wähle „Löschen“

Hinzufügen benutzerdefinierter Felder zum Benutzerverzeichnis

  1. Gehe zum Benutzerverzeichnis
  2. Klicke auf das Schraubenschlüssel-Symbol:

  1. Aktiviere die benutzerdefinierten Benutzerfelder, die du anzeigen möchtest
  2. Klicke auf „Speichern“

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

40 „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
Users self-select Category on Registration... is it possible?
Private custom user fields...?
Can we implement a system for user remarks during registration for admin review?
User customizable theme components (how-to)
This freaking software works so well I can’t even
User Field Prompt
New user reviews: admin assignment and logging of progress
Add users to groups on signup
How to add min or max values in custom fields?
Add a custom per-user setting in a plugin
Welcome questions on the first screen for bio
Announcing - Gender Pronouns Userfield on Meta
Grant Custom Badge Upon Reading ToS
If topic info is too long, tags are cut off and create a blank line
Required vs. optional sign-up fields
Terms of Service Checkbox
Hidden User Fields
New user filter by custom field and contact
Social Features
Where in Discourse can users publicly share PII?
Linking "static" information about member to topic posted
Add custom fields to signup and login
Using Discourse as a social media platform
Add users to groups through custom field automation
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?
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
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
Custom user fields not available in api

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. Allerdings könntest du nach zusätzlichen Details wie der Wertvalidierung oder Ähnlichem fragen.

Du könntest ein #contribute:feature-Thema mit deiner Idee erstellen oder danach suchen. :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: