Casi un componente especializado para mi sitio, pero lo compartiré aquí ya que podría ser útil. Agrega una plantilla al compositor basada en una cadena en la URL.
Ha habido muchas discusiones sobre tener plantillas de compositor para etiquetas. Eso no funcionó en mi caso de uso, así que construí esto en su lugar. Se puede usar a la fuerza, o modificar ligeramente para que funcione también para etiquetas.
Plantillas de Compositor de URL
Un componente de tema de Discourse que rellena previamente el compositor con texto de plantilla basado en parámetros de URL. Diseñado para funcionar perfectamente con Docuss para proporcionar plantillas específicas del contexto para diferentes tipos de interacciones.
Características
- Soporte de Parámetros de URL: Detecta automáticamente
?composer_template=Xen las URL y aplica la plantilla correspondiente - Múltiples Tipos de Plantilla: Configura hasta 6 plantillas diferentes para diferentes propósitos (informe, asistencia, invitación, plantillas personalizadas)
- Abrir Compositor Automáticamente: Opcionalmente abre el compositor automáticamente al visitar un enlace de Docuss sin hilos existentes
- Aplicación Flexible: Las plantillas se pueden aplicar solo a la primera publicación, a todas las respuestas o a ambas
- Persistencia de Sesión: Utiliza
sessionStoragepara mantener la selección de plantilla a través de las navegaciones de página - Modo de Depuración: Habilita el registro detallado de la consola para solucionar problemas de aplicación de plantillas
Instalación
-
Instala el componente de tema en Discourse:
- Ve a Admin → Personalizar → Temas
- Haz clic en “Instalar” → “Desde un repositorio de Git”
- Ingresa:
https://github.com/focallocal/url-composer-templates - Agrega el componente a tu tema activo
-
¡No se requiere reconstrucción del plugin! El soporte para el parámetro
composer_templateya existe endcs-discourse-pluginydcs-client. -
Implementa tu aplicación React (fl-maps) con los componentes
DCSLinkactualizados que pasan la propiedadcomposerTemplate. -
Configura las plantillas en la configuración del componente (Admin → Personalizar → Temas → tu tema → url-composer-templates → Configuración).
Configuración
Configuración de Plantillas
Cada plantilla tiene tres opciones de configuración:
Plantilla 1 (Informe)
- template_1_id:
report- El valor del parámetro de URL para activar esta plantilla - template_1_text: El texto para rellenar previamente en el compositor
- template_1_use_for:
first_post- Aplicar solo al crear temas nuevos
Plantilla 2 (Asistencia)
- template_2_id:
going- Para interacciones del tipo “Voy a ir” - template_2_text: Texto rellenado previamente para confirmaciones de asistencia
- template_2_use_for:
all_replies- Aplicar a todas las respuestas (no a las primeras publicaciones)
Plantilla 3 (Invitación)
- template_3_id:
invite- Para interacciones de invitación - template_3_text: Texto rellenado previamente para invitaciones
- template_3_use_for:
all_replies- Aplicar a todas las respuestas
Plantillas 4-6 (Personalizadas)
- Deshabilitadas por defecto
- Se pueden habilitar y personalizar para casos de uso específicos
- Configura ID, texto y alcance de aplicación según sea necesario
Configuración de Apertura Automática
- enable_auto_open_composer:
true- Cuando está habilitado, abre automáticamente el compositor si:- Se hace clic en un enlace de Docuss (la URL contiene
?composer_template=X) - Aún no existen hilos para esa combinación de etiquetas
- Ayuda a los usuarios a comenzar discusiones inmediatamente
- Se hace clic en un enlace de Docuss (la URL contiene
Modo de Depuración
- debug_mode:
false- Habilita para ver registros detallados de la consola con prefijos de emoji:
Registros de aplicación de plantillas
Registros de apertura automática del compositor
Integración con Docuss
Integración Automática
El componente url-composer-templates está diseñado para funcionar automáticamente con Docuss. Cuando tienes ambos:
- Este componente instalado en tu instancia de Discourse
- El cliente y plugin de Docuss actualizados (con soporte para
composer_template)
Las plantillas se aplicarán automáticamente según:
- Modo de Interacción:
- Modo
DISCUSS→ Utiliza sugerencias detriggerId(asistencia, invitación) o por defecto areport - Modo
COMMENT→ Utiliza la plantillareport
- Modo
Plantillas Personalizadas a través de Atributos HTML
Para un control más preciso, puedes especificar plantillas directamente en tu HTML usando el atributo data-dcs-composer-template:
<!-- Ejemplo: Botón de Informe -->
<div class="dcs-trigger"
data-dcs-trigger-id="issue-report"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="report">
Informar un Problema
</div>
<!-- Ejemplo: Botón de Asistencia -->
<div class="dcs-trigger"
data-dcs-trigger-id="event-rsvp"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="going">
¡Voy a ir!
</div>
<!-- Ejemplo: Botón de Invitación -->
<div class="dcs-trigger"
data-dcs-trigger-id="invite-friends"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="invite">
Invitar Amigos
</div>
<!-- Ejemplo: Plantilla Personalizada -->
<div class="dcs-trigger"
data-dcs-trigger-id="feedback"
data-dcs-interact-mode="DISCUSS"
data-dcs-composer-template="custom1">
Dar Opinión
</div>
Coincidencia de ID de Plantilla
El componente coincide con los IDs de plantilla del parámetro de URL con los IDs de plantilla configurados:
| Parámetro de URL | Configuración de Plantilla | Propósito Predeterminado |
|---|---|---|
?composer_template=report |
template_1_id |
Informes de errores, problemas |
?composer_template=going |
template_2_id |
Confirmaciones de asistencia a eventos |
?composer_template=invite |
template_3_id |
Invitaciones |
?composer_template=custom1 |
template_4_id |
Uso personalizado |
?composer_template=custom2 |
template_5_id |
Uso personalizado |
?composer_template=custom3 |
template_6_id |
Uso personalizado |
Cómo Funciona
Flujo de Aplicación de Plantilla
- Detección de URL: Cuando un usuario navega a una URL con
?composer_template=X, el componente almacena el ID de la plantilla ensessionStorage - Intercepción del Compositor: Cuando se abre el compositor, el componente busca un ID de plantilla almacenado
- Coincidencia de Plantilla: Encuentra la plantilla coincidente basada en el ID
- Validación de Alcance: Verifica si la plantilla debe aplicarse (primera publicación, respuesta o ambas)
- Inserción de Texto: Rellena previamente el compositor con el texto de la plantilla
- Limpieza: Marca la plantilla como aplicada para evitar que se vuelva a aplicar
Flujo de Apertura Automática
- Detección de Parámetros: Verifica si la URL contiene
?composer_template=Xy si la apertura automática está habilitada - Búsqueda de Tema: Busca temas existentes con la combinación de etiquetas actual
- Apertura del Compositor: Si no se encuentran temas, abre automáticamente el compositor
- Aplicación de Plantilla: La plantilla se aplica luego a través del flujo normal anterior
Casos de Uso de Ejemplo
Sitio Web de Eventos
# settings.yml
template_2_id: "going"
template_2_text: "¡Planeo asistir! 🎉\n\nEspero verlos a todos allí."
template_2_use_for: "all_replies"
template_3_id: "invite"
template_3_text: "Me gustaría invitar amigos a este evento.\n\nA quién estoy invitando:\n- \n\nPor qué deberían venir:\n"
template_3_use_for: "first_post"
Seguimiento de Problemas
template_1_id: "bug"
template_1_text: "**Descripción del Error:**\n\n**Pasos para Reproducir:**\n1. \n2. \n3. \n\n**Comportamiento Esperado:**\n\n**Comportamiento Actual:**\n"
template_1_use_for: "first_post"
template_4_enabled: true
template_4_id: "feature"
template_4_text: "**Solicitud de Característica:**\n\n**Caso de Uso:**\n\n**Solución Propuesta:**\n"
template_4_use_for: "first_post"
Participación Comunitaria
template_1_id: "question"
template_1_text: "**Mi Pregunta:**\n\n**Lo que He Intentado:**\n\n**Contexto Adicional:**\n"
template_1_use_for: "first_post"
template_2_id: "answer"
template_2_text: "Esto es lo que me funcionó:\n\n**Solución:**\n\n**Por qué funciona:**\n"
template_2_use_for: "all_replies"
Solución de Problemas
Las Plantillas No Se Aplican
- Verifica el Parámetro de URL: Asegúrate de que la URL contenga
?composer_template=Xdonde X coincida con un ID de plantilla - Habilita el Modo de Depuración: Activa
debug_modeen la configuración para ver los registros de la consola - Verifica el Alcance de la Plantilla: Comprueba si la configuración
use_forcoincide con tu acción (crear tema vs responder) - Borra SessionStorage: Abre la consola del navegador y ejecuta:
sessionStorage.clear()
La Apertura Automática No Funciona
- Verifica la Configuración: Asegúrate de que
enable_auto_open_composeresté configurado entrue - Verifica la URL: La apertura automática solo funciona cuando la URL contiene
?composer_template=X - Verifica Temas Existentes: La apertura automática solo se activa cuando NO existen temas con la combinación de etiquetas
- Habilita el Modo de Depuración: Busca registros de consola con el emoji

Se Aplica la Plantilla Incorrecta
- Verifica los IDs de Plantilla: Asegúrate de que tu parámetro de URL coincida exactamente con el ID de la plantilla (distingue mayúsculas de minúsculas)
- Verifica la Prioridad: Si varias plantillas podrían coincidir, se utiliza la primera que coincida
- Borra Sesión:
sessionStoragepodría contener valores antiguos:sessionStorage.clear()
Problemas de Integración con Docuss
- Actualiza Docuss: Asegúrate de tener las últimas versiones de:
dcs-client(con soporte paracomposerTemplateenHtmlBased.js)dcs-discourse-plugin(con generación de parámetros de URL enDcsIFrame.js.es6)
- Verifica los Atributos HTML: Confirma que
data-dcs-composer-templateesté configurado correctamente en los disparadores - Inspecciona la Red: Revisa la pestaña Red de las Herramientas de Desarrollador del navegador para ver si se están añadiendo parámetros de URL
Historial de Versiones
v1.0.0 (Actual)
- Lanzamiento inicial
- Soporte para 6 plantillas configurables
- Selección de plantilla basada en parámetros de URL
- Apertura automática del compositor para enlaces de Docuss
- Persistencia de SessionStorage
- Modo de depuración para solución de problemas
Contribución
¿Encontraste un error o tienes una solicitud de característica? Por favor, abre un problema en el repositorio de GitHub.
Licencia
Este componente es de código abierto y está disponible bajo la Licencia MIT.
Créditos
Desarrollado por Andy@Focallocal para su uso con Docuss - un sistema para incrustar discusiones de Discourse en cualquier sitio web.