Ce guide explique comment créer et configurer des champs utilisateur personnalisés dans Discourse, y compris comment les ajouter au formulaire d’inscription, aux profils utilisateur et à l’annuaire des utilisateurs.
Niveau d’utilisateur requis : Administrateur
Les champs utilisateur personnalisés vous permettent de collecter des informations supplémentaires auprès de vos utilisateurs au-delà des champs de profil standard. Ces champs peuvent être affichés sur les cartes utilisateur, les pages de résumé utilisateur, et même récupérés à l’aide du plugin Data Explorer. Ce guide vous guidera à travers le processus de création et de configuration des champs utilisateur personnalisés.
Ajout d’un champ utilisateur
Allez dans Administration > Communauté > Champs utilisateur (discourse.example.com/admin/config/user-fields).
Si vous n’avez créé aucun champ utilisateur, vous verrez cet écran :
Le type de champ détermine le champ de saisie que les utilisateurs verront sur le formulaire d’inscription. Choisissez en fonction du type d’informations que vous collectez :
Champ Texte
À utiliser pour des questions courtes avec de nombreuses réponses possibles (par exemple, « Pour quelle entreprise travaillez-vous ? »)
S’affiche comme une saisie de texte HTML sur une seule ligne
À utiliser pour les questions où les utilisateurs peuvent choisir plusieurs réponses parmi un ensemble d’options (par exemple, « Quels sujets vous intéressent ? »)
S’affiche comme une saisie de sélection multiple
Les options sont configurées de la même manière que pour les champs de liste déroulante
Définition du nom et de la description du champ
Nom du champ : Apparaît avant la saisie sur le formulaire d’inscription et le profil utilisateur
Description du champ : Apparaît après la saisie pour aider les utilisateurs à remplir le champ
Le nom et la description du champ sont tous deux requis pour enregistrer un champ.
Voici à quoi ressemblent les champs personnalisés sur le formulaire d’inscription :
Optionnel - Les champs facultatifs peuvent être laissés vides par les utilisateurs
Pour tous les utilisateurs - Lorsqu’un champ est requis par tous les utilisateurs, chaque compte, y compris les utilisateurs connectés, sera obligé de le remplir. Ceci est très utile pour des cas tels que l’exigence de conditions d’utilisation (ToS).
À l’inscription - Tous les nouveaux comptes seront tenus de remplir le champ.
De plus, au bas du formulaire de création, vous trouverez ces cases à cocher de préférence :
Modifiable après l’inscription : Permet aux utilisateurs de mettre à jour le champ depuis leur page de profil
Afficher sur le profil public : Affiche la valeur du champ sur la page de résumé de l’utilisateur
Afficher sur la carte utilisateur : Affiche la valeur du champ sur la carte utilisateur
Recherchable : Permet de rechercher des utilisateurs en fonction de la valeur de ce champ dans l’annuaire des utilisateurs
Afficher sur le formulaire d’inscription : Contrôle si le champ apparaît sur le formulaire d’inscription. Ceci est automatiquement activé (et ne peut pas être désactivé) lorsque l’exigence du champ est « Pour tous les utilisateurs » ou « À l’inscription », ou lorsque le champ n’est pas modifiable après l’inscription.
Afficher sur le profil public
Lorsqu’elle est activée, la valeur du champ sera affichée sur la page de profil de l’utilisateur :
Hmm. C’est intéressant. Je pense qu’il y a une solution à venir pour le problème Missing images at Meta.discourse.org, donc j’espère qu’il sera résolu par cela.
Y a-t-il un paramètre que je dois modifier pour spécifier la longueur maximale d’un champ utilisateur personnalisé ? Pour l’instant, dans ce champ « Test » que j’ai créé comme champ utilisateur de test, je ne peux même pas saisir un seul caractère sur mon profil utilisateur (ni même « Test », comme indiqué).
Les URL étant du texte, le champ texte fonctionne techniquement, @Vaping_Community. Cependant, vous demandez peut-être des détails supplémentaires tels que la validation de la valeur ou similaire.
Vous pourriez rechercher ou créer un sujet Feature avec ce que vous avez en tête.
Est-il possible d’intégrer une revendication personnalisée de mon SSO Auth0 à un champ personnalisé ? Actuellement, l’utilisateur saisit les informations du champ dans Auth0, puis doit les saisir une seconde fois lors de l’inscription. J’aimerais que la valeur soit mappée si possible.
Existe-t-il un moyen de vérifier le nom du champ dans la base de données ? Par exemple, nous avons un champ prénom, j’ai essayé custom.firstname, custom.first_name et custom.firstName, aucun d’entre eux n’a permis de remplir les champs sur l’écran d’inscription.
J’ai vérifié les journaux d’erreurs pour confirmer que les champs de jeton arrivent comme indiqué ci-dessus.
La syntaxe doit être custom.user_field_x, où x est l’ID numérique du champ affiché dans /admin/config/user-fields/{x}/edit.
Cette fonctionnalité de mappage n’est pas directement disponible dans le plugin Auth0.
Cela dit, il existe toujours des options pour réaliser ce que vous décrivez :
créer un composant de thème. Vous pouvez ajouter un petit script front-end qui synchronise automatiquement un champ utilisateur personnalisé Discourse avec une valeur déjà stockée dans Auth0. Par exemple, lorsqu’un utilisateur se connecte et que le champ est vide, le script peut appeler un point de terminaison sécurisé (une petite fonction cloud) qui récupère la valeur du champ depuis Auth0 et met à jour le profil Discourse via l’API.
utiliser des outils d’automatisation. Vous pourriez également utiliser des services d’automatisation externes comme Zapier ou Make pour effectuer cette synchronisation en dehors de Discourse. L’avantage est que vous n’avez pas à écrire/maintenir de code, mais seulement à payer pour le service tiers.
développement personnalisé. Nous pouvons étendre le plugin Auth0 lui-même pour prendre en charge nativement le mappage des revendications personnalisées dans les champs utilisateur lors de la connexion, ou créer un plugin personnalisé qui fonctionne en parallèle avec le plugin Auth0.
Un inconvénient évident de l’approche par composant de thème est que vous devrez écrire et maintenir vous-même le code personnalisé, tout en faisant attention du point de vue de la sécurité pour éviter d’introduire des bogues ou des vulnérabilités potentielles. Honnêtement, ce n’est pas une solution que je recommanderais pour un site de production comme le vôtre.
Si j’étais à votre place, je pencherais davantage pour la deuxième option, en utilisant des outils tiers, ou j’envisagerais de soumettre une demande de fonctionnalité ou une demande de travail personnalisé (en fonction de l’évaluation de nos chefs de projet) pour améliorer le plugin Auth0 lui-même.
Si vous souhaitez explorer la dernière option, nous pouvons poursuivre la discussion en privé.
Je me demande s’il existe un moyen moins fastidieux de réorganiser une longue liste de champs utilisateur que de cliquer une seule fois sur les petites flèches pour les déplacer d’un cran vers le haut ou vers le bas…?
Dans l’aperçu de la liste des champs utilisateur, je ne vois pas comment distinguer les champs qui sont présents sur le formulaire d’inscription et qui sont obligatoires (Je suis… Pays par exemple) et ceux qui sont sur le formulaire d’inscription mais facultatifs (Mes attentes). Est-ce que je rate quelque chose ou est-ce un oubli ? C’est assez lourd de devoir éditer le champ pour voir s’il est facultatif ou non. (Je ne suis pas sûr que ce soit le bon endroit pour cela, je ne savais pas où le mettre.)
Peut-être que le json qui fournit les données peut être un peu utile. Ce n’est pas très beau, mais vous pouvez regarder /admin/config/user-fields.json et obtenir quelque chose comme
oh c’est honnêtement beaucoup plus facile pour moi de travailler avec !
Est-ce que cela signifie que je peux simplement modifier ce fichier et avoir terminé ? Existe-t-il quelque part tel quel sur mon serveur, et où puis-je le trouver ?