Creazione e configurazione di campi utente personalizzati

:bookmark: Questa guida spiega come creare e configurare campi utente personalizzati in Discourse, incluso come aggiungerli al modulo di registrazione, ai profili utente e all’elenco 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 del profilo standard. Questi campi possono essere visualizzati nelle schede utente, nelle pagine di riepilogo utente e persino recuperati utilizzando il plugin Data Explorer. Questa guida ti guiderà attraverso il processo di creazione e configurazione dei campi utente personalizzati.

Aggiunta di un campo utente

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

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

  3. Fai clic sul pulsante “Aggiungi campo utente” per aggiungere un nuovo campo.

Scelta del 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

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

Area di testo

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

Data

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

Conferma

  • Utilizza per domande sì/no (es. “Vuoi iscriverti alla nostra newsletter?”)
  • Viene visualizzato come una casella di controllo HTML
  • Aggiungi collegamenti importanti per gli utenti da confermare utilizzando HTML, ad esempio:
    Accetto di leggere e rispettare <a href="https://meta.discourse.org/guidelines">le linee guida della Community.</a>

Menu a discesa

Per aggiungere opzioni a 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 simili a questa:

Selettore multiplo

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

Impostazione del nome e della descrizione del campo

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

:information_source: Sia il nome che la descrizione del campo 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 a tutti gli utenti, ogni account, inclusi gli utenti già collegati, sarà costretto a compilarlo. Questo è molto utile per casi come il requisito delle condizioni di servizio (ToS).
  • Alla registrazione - Tutti i nuovi account saranno tenuti a compilare il campo.

Inoltre, nella parte inferiore del modulo di creazione, troverai queste caselle di preferenza:

  • Modificabile dopo la registrazione: Consente agli utenti di aggiornare il campo dalla loro pagina profilo
  • Mostra nel profilo pubblico: Visualizza il valore del campo nella pagina di riepilogo dell’utente
  • Mostra nella scheda utente: Mostra il valore del campo nella scheda utente
  • Ricerca: Abilita la ricerca di utenti in base al valore di questo campo nell’elenco degli utenti
  • Mostra nel modulo di registrazione: Controlla se il campo appare nel modulo di registrazione. Questo viene abilitato automaticamente (e non può essere disabilitato) quando il requisito del campo è “Per tutti gli utenti” o “Alla registrazione”, o quando il campo non è modificabile dopo la registrazione.

Mostra nel profilo pubblico

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

Mostra nella scheda utente

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

Ricerca

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

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 a esso nell’elenco
  3. Per eliminare un campo, fai clic sul menu dei puntini (⋮) accanto a esso e seleziona “Elimina”

Aggiunta di campi personalizzati all’elenco degli utenti

  1. Vai all’elenco 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 personalizzati selezionati ora appariranno nella tabella dell’elenco degli utenti:

40 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
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

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 avere bisogno di funzionalità aggiuntive, come la validazione dei valori o simili.

Potresti cercare o creare un topic Contribute > Feature con le tue idee. :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: