| Resumen | Añadir un botón o texto en cualquier lugar | |
| Repositorio | https://github.com/literatecomputing/discourse-custom-components | |
| Guía de instalación | Cómo instalar un tema o componente de tema | |
| ¿Nuevo en los temas de Discourse? | Guía para principiantes sobre el uso de temas de Discourse |
Instalar este componente de tema
Añade un botón de enlace o texto arbitrario en cualquier salida de complemento (plugin outlet). (Ignore las marcas de agua en las imágenes; tomé estas capturas de pantalla en un sitio de prueba/staging).
Para ver dónde están las salidas de complemento, use Introducing Discourse developer toolbar para encontrarlas. Si no sabe qué es una salida de complemento, puede echar un vistazo a Using Plugin Outlet Connectors from a Theme or Plugin, pero este componente le permite, con algunas restricciones, pegar texto en cualquier salida de complemento sin programar o entender realmente qué es una salida de complemento.
Comencé a desarrollar este complemento para alguien que quería mostrar un botón de “haga clic en este botón para suscribirse y poder enviar mensajes privados” en los perfiles de usuario y tarjetas de usuario. Querían que el botón se mostrara si el usuario no podía enviar mensajes privados. Como no siempre soy tan inteligente como creo, escribí el componente usando grupos para determinar si se mostraba el botón. Un problema con este enfoque era que los miembros del personal no estaban en el grupo de suscriptores, por lo que obtenían el botón de “tienes que suscribirte” a pesar de que podían enviar mensajes privados. Además, el grupo estaba oculto, por lo que era imposible usarlo en un componente de tema de todos modos. Reescribí ese componente de tema para usar currentUser.can_send_private_messages para determinar si mostrar el botón.
¿Para quién es esto?
Si desea colocar un botón con un enlace o algo de texto arbitrario que se muestre u oculte para ciertos grupos, esto le permitirá insertarlos en cualquier salida de complemento. ¿Quiere agregar un enlace de botón “Deberías suscribirte” entre cada mensaje excepto para aquellos que no son miembros? Esto lo hará. ¿Quiere pegar HTML arbitrario en una salida de complemento, solo para ver cómo se verá? Esto lo hará.
Cómo ayuda a los desarrolladores
Este tema tiene algunos ejemplos sencillos de cómo:
- usar el Objects type for theme setting
- usar
api.renderInOutlet(como se describe aquí para pegar un componente Glimmer en una salida controlada por una configuración en lugar de crear un archivo en el directorioconnectors - Escribir un componente Glimmer simple que accede a
currentUser - Envolver un componente en otra plantilla (en línea) para poder pasarle datos
- Mostrar HTML arbitrario desde una configuración de tema libre de las restricciones de Markdown: claro, tal vez
pero si está tratando de hacerlo dentro de una <template> dentro de un archivo .gjs, funciona un poco diferente (como {{htmlSafe component.text}})



