Esta guía explica cómo crear y configurar campos de usuario personalizados en Discourse, incluyendo cómo añadirlos al formulario de registro, perfiles de usuario y directorio de usuarios.
Nivel de usuario requerido: Administrador
Los campos de usuario personalizados le permiten recopilar información adicional de sus usuarios más allá de los campos de perfil estándar. Estos campos se pueden mostrar en las tarjetas de usuario, páginas de resumen de usuario e incluso recuperarse utilizando el plugin Data Explorer. Esta guía le guiará a través del proceso de creación y configuración de campos de usuario personalizados.
Añadir un campo de usuario
Vaya a Admin > Comunidad > Campos de usuario (discourse.example.com/admin/config/user-fields).
Si aún no ha creado ningún campo de usuario, verá esta pantalla:
El tipo de campo determina el campo de entrada que verán los usuarios en el formulario de registro. Elija según el tipo de información que esté recopilando:
Campo de texto
Úselo para preguntas cortas con muchas respuestas posibles (ej. “¿Para qué empresa trabaja?”)
Se muestra como una entrada de texto HTML de una sola línea
Opcional: Los campos opcionales pueden dejarse vacíos por los usuarios
Para todos los usuarios: Cuando un campo es obligatorio para todos los usuarios, cada cuenta, incluidas las cuentas ya iniciadas, se verá obligada a completarlo. Esto es muy útil para casos como el requisito de términos de servicio (ToS).
En el registro: Todas las cuentas nuevas deberán completar el campo.
Además, en la parte inferior del formulario de creación, encontrará estas casillas de preferencia:
Editable después del registro: Permite a los usuarios actualizar el campo desde su página de perfil
Mostrar en el perfil público: Muestra el valor del campo en la página de resumen del usuario
Mostrar en la tarjeta de usuario: Muestra el valor del campo en la tarjeta de usuario
Buscable: Permite buscar usuarios basándose en el valor de este campo en el directorio de usuarios
Mostrar en el formulario de registro: Controla si el campo aparece en el formulario de registro. Esto se habilita automáticamente (y no se puede deshabilitar) cuando el requisito del campo es “Para todos los usuarios” o “En el registro”, o cuando el campo no es editable después del registro.
Mostrar en el perfil público
Cuando está habilitado, el valor del campo se mostrará en la página de perfil del usuario:
Hmm. Eso es interesante. Creo que hay una solución en camino para el problema de Missing images at Meta.discourse.org, así que espero que se resuelva con eso.
¿Hay alguna configuración que deba modificar para especificar la longitud máxima de un campo de usuario personalizado? En este momento, en este campo “Test” que creé como campo de usuario de prueba, no puedo introducir ni un solo carácter en mi perfil de usuario (ni siquiera “Test”, como se muestra).
Dado que las URL son texto, el campo de texto funciona técnicamente, @Vaping_Community. Sin embargo, es posible que esté solicitando detalles adicionales como validación de valor o similar.
Podría buscar o crear un tema de Feature con lo que tiene en mente.
¡Tenga en cuenta que si desea incrustar un enlace en uno de los campos de usuario personalizados, debe usar la sintaxis HTML! <a> href="url">texto del enlace</a>
Por ejemplo, para reconocer las directrices/políticas de la comunidad:
¿Puedo vincular un reclamo personalizado de mi Auth0 SSO a un campo personalizado? Actualmente, el usuario ingresa la información del campo en Auth0 y luego tiene que ingresarla una segunda vez al registrarse. Me gustaría que el valor se mapeara si es posible.
¿Hay alguna forma de verificar el nombre del campo en la base de datos? Por ejemplo, tenemos un campo de nombre, probé custom.firstname, custom.first_name y custom.firstName, ninguno de los cuales resultó en que los campos se poblaran en la pantalla de registro.
He revisado los registros de errores para confirmar que los campos del token están llegando como se muestra arriba.
La sintaxis debe ser custom.user_field_x, donde x es el ID numérico del campo que se muestra en /admin/config/user-fields/{x}/edit.
Esa función de mapeo no está disponible directamente en el plugin Auth0.
Dicho esto, todavía hay opciones para lograr lo que describes:
crear un componente temático. Puedes agregar un pequeño script de front-end que sincronice automáticamente un campo de usuario personalizado de Discourse con un valor ya almacenado en Auth0. Por ejemplo, cuando un usuario inicia sesión y el campo está vacío, el script puede llamar a un endpoint seguro (una pequeña función en la nube) que obtenga el valor del campo de Auth0 y actualice el perfil de Discourse a través de la API.
usar herramientas de automatización. También podrías usar servicios de automatización externos como Zapier o Make para realizar esa sincronización fuera de Discourse. La ventaja es que no tienes que escribir/mantener código, solo pagar por el servicio de terceros.
desarrollo personalizado. Podemos extender el propio plugin Auth0 para que admita de forma nativa el mapeo de reclamaciones personalizadas a campos de usuario al iniciar sesión, o crear un plugin personalizado que funcione junto con el plugin Auth0.
Un inconveniente claro del enfoque del componente temático es que tendrías que escribir y mantener código personalizado tú mismo, al mismo tiempo que tienes cuidado desde el punto de vista de la seguridad para evitar introducir posibles errores o vulnerabilidades. Honestamente, no es una solución que recomendaría para un sitio de producción como el tuyo.
Si estuviera en tu posición, me inclinaría más por la segunda opción, utilizando herramientas de terceros, o consideraría enviar una solicitud de función o una solicitud de trabajo personalizado (dependiendo de la evaluación de nuestros gerentes de proyecto) para mejorar el propio plugin Auth0.
Si estás interesado en explorar la última opción, podemos continuar la discusión en privado.
Me pregunto si hay una forma menos engorrosa de reorganizar una larga lista de campos de usuario que hacer clic individualmente en las pequeñas flechas para moverlos un paso hacia arriba o hacia abajo…?
En la descripción general de la lista de campos de usuario, no veo cómo distinguir los campos que están en el registro y son obligatorios (Je suis… Pays, por ejemplo) de aquellos que están en el formulario de registro pero son opcionales (Mes attentes). ¿Me estoy perdiendo algo o es una omisión? Es bastante engorroso tener que editar el campo para ver si es opcional o no. (No estoy seguro de si este es el lugar correcto para esto, no estaba seguro de dónde ponerlo).
Quizás el json que proporciona los datos pueda ser de alguna ayuda. No es muy bonito, pero puedes mirar en /admin/config/user-fields.json y obtener algo como
¡Oh, eso es honestamente mucho más fácil para mí trabajar!
¿Eso significa que solo puedo editar ese archivo y terminar con eso? ¿Existe en algún lugar así en mi servidor y dónde lo encuentro?