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.
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
Vai su Admin > Community > Campi utente (discourse.example.com/admin/config/user-fields).
Se non hai ancora creato campi utente, vedrai questa schermata:
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
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:
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.
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).
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.
È 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.
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.
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.
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…?
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.)
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?