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.
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
Vai su Amministrazione > Community > Campi utente (discourse.example.com/admin/config/user-fields).
Se non hai ancora creato alcun campo 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
Utilizza per domande brevi con molte possibili risposte (es. “Per quale azienda lavori?”)
Viene visualizzato come un input di testo HTML su una riga
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>
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:
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 avere bisogno di funzionalità aggiuntive, come la validazione dei valori o simili.
È 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?