Erstellen und Konfigurieren benutzerdefinierter Benutzerfelder

:bookmark: This guide explains how to create and configure custom user fields in Discourse, including how to add them to the signup form, user profiles, and user directory.

:person_raising_hand: Required user level: Administrator

Custom user fields allow you to collect additional information from your users beyond the standard profile fields. These fields can be displayed on user cards, user summary pages, and even retrieved using the Data Explorer plugin. This guide will walk you through the process of creating and configuring custom user fields.

Adding a user field

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

  2. If you haven’t created any user fields yet, you’ll see this screen:

  3. Click the “Add user field” button to add a new field.

Choosing a field type

The field type determines the input field users will see on the signup form. Choose based on the kind of information you’re collecting:

Text field

Confirmation

Dropdown

To add options for a dropdown field:

  1. Click on the option input
  2. Type an answer and click “Create”
  3. Repeat for additional options

The completed options should look similar to this:

Setting the field name and description

  • Field Name: Appears before the input on the signup form and user profile
  • Field Description: Appears after the input to help users complete the field

:information_source: Both the field name and description are required to save a field.

Here’s how custom fields appear on the signup form:

Configuring user field options

Field Requirements

  • Optional - Optional fields may be left empty by users
  • For all users - When a field is required by all users, every account, including logged on users will be forced to fill it. This is very useful for cases such as a terms-of-service (ToS) requirement.
  • On signup - All new account will be required to fill the field.

Additionally, at the bottom of the creation form, you’ll find these options:

  • Editable after signup: Allows users to update the field from their profile page
  • Required at signup: Makes the field mandatory during account creation
  • Show on public profile: Displays the field value on the user’s summary page
  • Show on user card: Shows the field value on the user card
  • Searchable: Enables searching for users based on this field’s value in the user directory

Show on public profile

When enabled, the field value will be shown on the user’s profile page:

Show on user card

When enabled, the field value will be displayed on the user card:

Searchable

When enabled, you can search for users based on their custom field values:

Saving and editing fields

  1. Click “Save” to add the field to your site’s list of user fields
  2. To edit a field, click the “Edit” button next to it in the list
  3. To delete a field, click the “Delete” button

Adding custom fields to the user directory

  1. Go to the user directory
  2. Click the wrench icon:

  1. Check the custom user fields you want to display
  2. Click “Save”

The selected custom fields will now appear in the user directory table:

Last edited by @fzngagan 2025-07-17T09:12:38Z

Last checked by @hugh 2024-08-27T04:45:20Z

Check documentPerform check on document:
38 „Gefällt mir“

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...]
2 „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“