Creazione e configurazione di campi utente personalizzati

:bookmark: Questa guida spiega come creare e configurare campi utente personalizzati in Discourse, inclusa l’aggiunta al modulo di registrazione, ai profili utente e alla directory degli utenti.

:person_raising_hand: Livello utente richiesto: Amministratore

I campi utente personalizzati ti consentono di raccogliere informazioni aggiuntive dai tuoi utenti oltre ai campi standard del profilo. Questi campi possono essere visualizzati sulle schede utente, sulle pagine di riepilogo utente e persino recuperati utilizzando il plugin Data Explorer. Questa guida ti illustrerà il processo di creazione e configurazione dei campi utente personalizzati.

Aggiunta di un campo utente

  1. Vai su Admin > Community > Campi utente (discourse.example.com/admin/config/user-fields).

  2. Se non hai ancora creato campi utente, vedrai questa schermata:

  3. Fai clic sul pulsante “Aggiungi campo utente” per aggiungerne uno nuovo.

Scelta di un tipo di campo

Il tipo di campo determina il campo di input che gli utenti vedranno nel modulo di registrazione. Scegli in base al tipo di informazioni che stai raccogliendo:

Campo di testo

  • Usalo per domande brevi con molte risposte possibili (es. “Per quale azienda lavori?”)
  • Viene visualizzato come input di testo HTML su una singola riga

Area di testo

  • Usalo per domande che potrebbero richiedere risposte più lunghe e su più righe (es. “Raccontaci di te”)
  • Viene visualizzato come input di area di testo HTML multilinea

Data

  • Usalo per raccogliere valori di data (es. “Qual è la tua data di nascita?”)
  • Viene visualizzato come input a selettore di data

Conferma

Menu a discesa

  • Usalo per domande con un numero fisso di risposte possibili (es. “Qual è il tuo genere?”)
  • Viene visualizzato come input di selezione HTML

Per aggiungere opzioni per un campo a discesa:

  1. Fai clic sull’input dell’opzione
  2. Digita una risposta e fai clic su “Crea”
  3. Ripeti per le opzioni aggiuntive

Le opzioni completate dovrebbero apparire in modo simile a questo:

Selezione multipla

  • Usalo per domande in cui gli utenti possono scegliere più risposte da un insieme di opzioni (es. “Quali argomenti ti interessano?”)
  • Viene visualizzato come input di selezione multipla
  • Le opzioni vengono configurate allo stesso modo dei campi a discesa

Impostazione del nome e della descrizione del campo

  • Nome campo: Appare prima dell’input nel modulo di registrazione e nel profilo utente
  • Descrizione campo: Appare dopo l’input per aiutare gli utenti a completare il campo

:information_source: Sia il nome del campo che la descrizione sono obbligatori per salvare un campo.

Ecco come appaiono i campi personalizzati nel modulo di registrazione:

Configurazione delle opzioni del campo utente

Requisiti del campo

  • Facoltativo - I campi facoltativi possono essere lasciati vuoti dagli utenti
  • Per tutti gli utenti - Quando un campo è richiesto da tutti gli utenti, ogni account, inclusi gli utenti connessi, sarà obbligato a compilarlo. Questo è molto utile per casi come i requisiti dei termini di servizio (ToS).
  • Alla registrazione - Tutti i nuovi account saranno obbligati a compilare il campo.

Inoltre, nella parte inferiore del modulo di creazione, troverai queste caselle di controllo delle preferenze:

  • Modificabile dopo la registrazione: Consente agli utenti di aggiornare il campo dalla loro pagina profilo
  • Mostra su profilo pubblico: Visualizza il valore del campo sulla pagina di riepilogo dell’utente
  • Mostra sulla scheda utente: Mostra il valore del campo sulla scheda utente
  • Ricercabile: Abilita la ricerca di utenti in base al valore di questo campo nella directory degli utenti
  • Mostra sul modulo di registrazione: Controlla se il campo appare sul modulo di registrazione. Questa opzione è abilitata automaticamente (e non può essere disabilitata) quando il requisito del campo è “Per tutti gli utenti” o “Alla registrazione”, oppure quando il campo non è modificabile dopo la registrazione.

Mostra su profilo pubblico

Quando è abilitato, il valore del campo verrà mostrato sulla pagina profilo dell’utente:

Mostra sulla scheda utente

Quando è abilitato, il valore del campo verrà visualizzato sulla scheda utente:

Ricercabile

Quando è abilitato, puoi cercare utenti in base ai loro valori di campo personalizzati:

Salvataggio e modifica dei campi

  1. Fai clic su “Salva” per aggiungere il campo all’elenco dei campi utente del tuo sito
  2. Per modificare un campo, fai clic sul pulsante “Modifica” accanto ad esso nell’elenco
  3. Per eliminare un campo, fai clic sul menu con i puntini di sospensione (⋮) accanto ad esso e seleziona “Elimina”

Aggiunta di campi personalizzati alla directory degli utenti

  1. Vai alla directory degli utenti
  2. Fai clic sull’icona della chiave inglese:

  1. Seleziona i campi utente personalizzati che desideri visualizzare
  2. Fai clic su “Salva”

I campi utente personalizzati selezionati appariranno ora nella tabella della directory degli utenti:

39 Mi Piace
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

Penso che manchino due immagini sotto queste intestazioni:

Non sono sicuro se sia correlato a Immagini mancanti su Meta.discourse.org – posterò anche lì.

Riesco a vedere quelle immagini? (anche in una finestra anonima)

1 Mi Piace

Non riesco a vederli

Ma il secondo funziona nella mia citazione.

Modifica

1 Mi Piace

È interessante che io possa vedere la seconda immagine nella citazione, ma non nel post originale^^

1 Mi Piace

Hmm. Interessante. Penso che ci sia una correzione in arrivo per il problema Missing images at Meta.discourse.org, quindi spero che venga risolto da quello. :crossed_fingers:

2 Mi Piace

C’è un’impostazione che devo modificare per specificare la lunghezza massima di un campo utente personalizzato? Al momento, in questo campo “Test” che ho creato come campo utente di prova, non riesco a inserire nemmeno un carattere nel mio profilo utente (o anche “Test”, come mostrato).

Mi piacerebbe un tipo di campo: link / URL, è possibile?

Poiché gli URL sono testo, il campo di testo funziona tecnicamente, @Vaping_Community. Tuttavia, potresti chiedere dettagli aggiuntivi come la convalida del valore o simili.

Potresti cercare o creare un argomento Feature con ciò che hai in mente. :slight_smile:

3 Mi Piace

Ci sono piani per consentire più righe/un compositore per campi utente personalizzati? :folded_hands:

Nota che se vuoi incorporare un link in uno dei campi utente personalizzati, devi usare la sintassi HTML!
<a>href="url">testo del link</a>

Ad esempio, per riconoscere le linee guida/policy della community:

1 Mi Piace

È possibile collegare un’asserzione personalizzata dal mio SSO Auth0 a un campo personalizzato? Attualmente l’utente inserisce le informazioni del campo in Auth0, quindi deve inserirle una seconda volta al momento della registrazione. Vorrei che il valore venisse mappato, se possibile.

È possibile, sì:

All’interno del tuo endpoint SSO, hai la possibilità di mappare il claim al payload, ad esempio:

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 Mi Piace

Grazie @dax

C’è un modo per verificare il nome del campo nel db? Ad esempio, abbiamo un campo nome, ho provato custom.firstname, custom.first_name e custom.firstName, nessuno dei quali ha comportato il popolamento dei campi nella schermata di registrazione.

Ho controllato i log degli errori per confermare che i campi token stiano arrivando come mostrato sopra.

Scavando più a fondo nel codice qui, è solo per Discourse Connect SSO? Stiamo usando il plugin Auth0

La sintassi deve essere custom.user_field_x, dove x è l’ID numerico del campo mostrato in /admin/config/user-fields/{x}/edit.

Questa funzionalità di mapping non è disponibile direttamente nel plugin Auth0.

Detto questo, ci sono ancora opzioni per ottenere ciò che stai descrivendo:

  • creare un componente tema. Puoi aggiungere un piccolo script front-end che sincronizzi automaticamente un campo utente personalizzato di Discourse con un valore già memorizzato in Auth0. Ad esempio, quando un utente accede e il campo è vuoto, lo script può chiamare un endpoint sicuro (una piccola funzione cloud) che recupera il valore del campo da Auth0 e aggiorna il profilo Discourse tramite API.
  • utilizzare strumenti di automazione. Potresti anche utilizzare servizi di automazione esterni come Zapier o Make per eseguire la sincronizzazione al di fuori di Discourse. Il vantaggio è che non devi scrivere/mantenere codice ma paghi solo per il servizio di terze parti.
  • sviluppo personalizzato. Possiamo estendere il plugin Auth0 stesso per supportare nativamente il mapping di claim personalizzati nei campi utente all’accesso, o creare un plugin personalizzato che lavori in coppia con il plugin Auth0.

Uno svantaggio evidente dell’approccio del componente tema è che dovresti scrivere e mantenere tu stesso codice personalizzato, prestando attenzione anche alla sicurezza per evitare di introdurre potenziali bug o vulnerabilità. Onestamente, non è una soluzione che consiglierei per un sito di produzione come il tuo.

Se fossi nella tua posizione, propenderei più per la seconda opzione, utilizzando strumenti di terze parti, o prenderei in considerazione l’invio di una richiesta di funzionalità o di una richiesta di lavoro personalizzato (a seconda della valutazione dei nostri project manager) per migliorare il plugin Auth0 stesso.

Se sei interessato a esplorare quest’ultima opzione, possiamo continuare la discussione privatamente.

1 Mi Piace

Mi chiedo se ci sia un modo meno macchinoso per riorganizzare un lungo elenco di campi utente rispetto al fare clic sulle piccole frecce per spostarli su o giù di un gradino alla volta…? :face_with_peeking_eye:

Nella panoramica dell’elenco dei campi utente, non riesco a vedere come distinguere i campi che sono presenti nella registrazione e sono obbligatori (Je suis… Pays, ad esempio) da quelli che sono presenti nel modulo di registrazione ma sono facoltativi (Mes attentes). Mi sto perdendo qualcosa o si tratta di una svista? È piuttosto scomodo dover modificare il campo per vedere se è obbligatorio o meno. (Non sono sicuro che questo sia il posto giusto per questa segnalazione, non ero sicuro di dove inserirla.)

Forse il json che fornisce i dati può essere d’aiuto. Non è bello ma puoi guardare in /admin/config/user-fields.json e trovare qualcosa di simile a

    {
      "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"
      ]
    },

Ma ovviamente non è bello come le informazioni nell’interfaccia

1 Mi Piace

oh, questo è onestamente molto più facile per me lavorare!
Significa che posso semplicemente modificare quel file e ho finito? Esiste da qualche parte così sul mio server, e dove lo trovo? :heart_eyes::heart_eyes::heart_eyes: