Message

Una utilidad general de registro de mensajes que proporciona un sistema flexible de entidades de mensaje para crear flujos de actividad, notificaciones y registro de eventos.

message
10,450 sites
116
drupal.org

Install

Drupal 11, 10, 9 v8.x-1.8
composer require 'drupal/message:8.x-1.8'

Overview

El módulo Message proporciona el núcleo del stack de mensajes, ofreciendo un sistema completo de entidades de mensaje para Drupal. Introduce un tipo de entidad de contenido Message que puede organizarse en múltiples plantillas de mensaje (bundles), permitiendo funcionalidades flexibles de registro y visualización de mensajes.

Las capacidades principales incluyen reemplazo dinámico de tokens en el texto del mensaje, argumentos de callback personalizados para generación de contenido en tiempo de ejecución, y un sistema de parciales que permite dividir el texto del mensaje en múltiples componentes reutilizables. El módulo se integra perfectamente con Views para la visualización de mensajes, soporta contenido multilingüe y proporciona purga automática de mensajes basada en antigüedad o límites de cuota.

El módulo sirve para tres casos de uso principales: registrar y mostrar eventos del sistema (flujos de actividad similares al News Feed de Facebook), notificar a usuarios cuando se generan mensajes (a través del módulo Message Notify), y notificar a suscriptores cuando el contenido que siguen se actualiza (a través del módulo Message Subscribe).

Features

  • Entidad de contenido Message con plantillas configurables (bundles) para organizar diferentes tipos de mensajes
  • Entidad de configuración MessageTemplate que sirve como bundles con campos de texto multi-valor (parciales)
  • Reemplazo dinámico de tokens usando el sistema de tokens de Drupal para inyección de contenido en tiempo de ejecución
  • Tokens de uso único que se reemplazan en el momento de creación del mensaje para optimización del rendimiento
  • Argumentos de callback personalizados que permiten a funciones PHP generar valores de reemplazo
  • Sistema de parciales de texto de mensaje que permite separar el marcado HTML del contenido y renderizado selectivo
  • Soporte de modos de vista para controlar la visualización de mensajes por plantilla a través de Gestionar visualización
  • Purga automática de mensajes vía cron basada en límites de antigüedad (días) o cantidad (cuota)
  • Configuración de purga por plantilla que sobrescribe los ajustes globales para control detallado de retención de mensajes
  • Eliminación automática de mensajes cuando las entidades referenciadas son eliminadas
  • Integración completa con Views con manejador de campo personalizado para visualización de texto de mensaje
  • Soporte multilingüe con mensajes y plantillas traducibles
  • Soporte de operaciones masivas para gestión de mensajes
  • Soporte de migración desde el módulo message de Drupal 7
  • Puntos de integración para el módulo Rules a través de Entity API

Use Cases

Flujo de actividad / News Feed

Crear un flujo de actividad estilo Facebook mostrando acciones de usuarios. Definir plantillas de mensaje para diferentes actividades (contenido creado, comentó, siguió a usuario), usar tokens para inyectar contenido dinámico (nombres de usuario, títulos de contenido, enlaces), y mostrar mensajes usando Views. Los mensajes incluyen automáticamente marcas de tiempo e información del autor.

Registro de eventos del sistema

Registrar eventos importantes del sistema más allá del registro del core de Drupal. Crear plantillas para eventos como registro de usuarios, publicación de contenido o transiciones de flujo de trabajo. Usar callbacks para capturar datos complejos en el momento del evento, y aprovechar la configuración de purga para gestionar el crecimiento del registro automáticamente.

Centro de notificaciones de usuario

Construir una bandeja de entrada de notificaciones para usuarios. Crear plantillas de mensaje para tipos de notificación, adjuntar mensajes a usuarios a través de campos de referencia de entidad, usar Message Notify para enviar resúmenes por email, y mostrar notificaciones no leídas usando Views con filtros expuestos.

Seguimiento de cambios de contenido

Rastrear cambios en contenido importante. Crear plantillas con tokens de uso único para capturar el estado del contenido en el momento de la modificación, almacenar referencias a las entidades modificadas, y construir pistas de auditoría mostrando quién cambió qué y cuándo.

Actualizaciones basadas en suscripción

Notificar a usuarios sobre contenido que siguen. Combinar con los módulos Message Subscribe y Flag para permitir a los usuarios suscribirse a contenido, luego generar y entregar automáticamente mensajes cuando el contenido suscrito cambia, usando preferencias de notificación por usuario.

Notificaciones multilingües

Enviar mensajes en los idiomas preferidos de los usuarios. Crear plantillas de mensaje traducidas usando Configuration Translation, establecer el idioma del mensaje según las preferencias del destinatario, y dejar que el sistema de tokens resuelva las traducciones apropiadamente.

Tips

  • Usa tokens de uso único (@{token}) para datos que no cambiarán, mejorando el rendimiento al evitar búsquedas repetidas de tokens en el momento de visualización.
  • Divide el texto del mensaje en múltiples parciales para separar la estructura HTML del contenido, permitiendo configuraciones de visualización flexibles por modo de vista.
  • Configura ajustes de purga por plantilla para diferentes necesidades de retención - mantén los mensajes del sistema más tiempo mientras limpias notificaciones efímeras rápidamente.
  • Usa el submódulo Message Example para aprender patrones de implementación antes de construir tu propio sistema de mensajes.
  • Aprovecha el campo personalizado 'get_text' de Views con el parámetro delta para mostrar parciales específicos en diferentes partes del diseño de tu página.
  • Al crear mensajes programáticamente, usa setArguments() para pasar funciones callback que resuelvan valores en el momento de visualización para contenido dinámico.
  • Habilita el módulo Token para obtener un navegador de tokens útil al editar plantillas de mensaje.
  • Usa campos de referencia de entidad en los mensajes para crear relaciones, habilitando la limpieza automática cuando el contenido referenciado es eliminado.

Technical Details

Admin Pages 6
Plantillas de mensaje /admin/structure/message

Lista todas las plantillas de mensaje disponibles. Desde esta página puedes añadir, editar y eliminar plantillas de mensaje que definen la estructura y contenido de diferentes tipos de mensajes.

Añadir plantilla de mensaje /admin/structure/message/template/add

Crear una nueva plantilla de mensaje que define la estructura y contenido de texto para un tipo específico de mensaje.

Editar plantilla de mensaje /admin/structure/message/manage/{message_template}

Editar una plantilla de mensaje existente incluyendo su etiqueta, descripción, contenido de texto y configuración de purga.

Message /admin/config/message

Página principal de configuración del módulo Message. Proporciona acceso a las páginas de configuración relacionadas con mensajes.

Message /admin/config/message/message

Configurar los ajustes globales de mensaje incluyendo la purga automática y el comportamiento de eliminación de entidades.

Mensajes /admin/content/message

Ver y gestionar todas las entidades de mensaje. Muestra los mensajes en una tabla con soporte de operaciones masivas, filtrado por plantilla y columnas ordenables.

Permissions 3
Administrar plantillas de mensaje

Administrar plantillas de mensaje que se pueden usar para registrar un evento. También otorga acceso a la configuración global de mensajes.

Administrar mensajes

Administrar entradas de mensaje a través del backend. Permite la gestión de entidades de mensaje individuales.

Ver resumen de mensajes

Otorga permiso para ver los mensajes en el sitio. Requerido para acceder a la vista de listado de mensajes.

Hooks 7
hook_message_view

Actuar sobre un mensaje que está siendo ensamblado antes del renderizado. Permite añadir elementos al array de contenido del mensaje.

hook_message_view_alter

Alterar los resultados de entity_view() para mensajes después de que el contenido ha sido ensamblado. Puede modificar pesos, añadir callbacks post_render.

hook_default_message_template

Definir configuraciones de plantillas de mensaje por defecto que pueden crearse programáticamente.

hook_default_message_template_alter

Alterar las configuraciones de plantillas de mensaje por defecto antes de que sean usadas.

hook_form_message_template_form_alter

Alterar los formularios de plantilla de mensaje. Puede usarse con #entity_builders para copiar valores del formulario a la entidad.

hook_default_message_category

Definir configuraciones de categorías de plantillas de mensaje por defecto.

hook_default_message_category_alter

Alterar las configuraciones de categorías de plantillas de mensaje por defecto.

Troubleshooting 5
Los mensajes no se eliminan automáticamente

Asegúrate de que cron se esté ejecutando regularmente. Verifica que 'Purgar mensajes' esté habilitado en /admin/config/message/message con al menos un método de purga configurado. Para purga por plantilla, verifica que 'Sobrescribir configuración global de purga' esté marcado en la plantilla.

Los tokens no se reemplazan en el texto del mensaje

Verifica que 'Reemplazar tokens' esté marcado en la configuración de la plantilla de mensaje. Asegúrate de que el módulo Token esté instalado para el navegador de tokens. Comprueba que los tokens usen la sintaxis correcta: [message:field_name] para campos de mensaje.

Los mensajes permanecen después de eliminar la entidad referenciada

Verifica que el tipo de entidad esté seleccionado en 'Eliminar automáticamente mensajes que referencian las siguientes entidades' en /admin/config/message/message. Solo los campos entity_reference activan la eliminación automática.

Los modos de vista no muestran los parciales de texto esperados

Navega a la pestaña 'Gestionar visualización' de la plantilla de mensaje en /admin/structure/message/manage/[plantilla]/display y configura qué parciales son visibles para cada modo de vista.

La migración desde Drupal 7 falla

Asegúrate de que la migración d7_filter_format se ejecute primero (dependencia). Verifica que la conexión a la base de datos de origen esté configurada. Comprueba que el módulo message estuviera habilitado en el sitio D7.

Security Notes 5
  • El módulo filtra las descripciones de las plantillas de mensaje usando Xss::filterAdmin() para prevenir ataques XSS.
  • El texto del mensaje usa el sistema de formato de texto de Drupal con sanitización adecuada equivalente a check_markup.
  • El acceso a la administración de mensajes requiere permisos específicos - otorga 'administer messages' y 'administer message templates' con cuidado.
  • El permiso 'overview messages' controla el acceso a la vista de listado de mensajes - considera la sensibilidad del contenido al otorgarlo.
  • Las funciones callback en los argumentos del mensaje se ejecutan en el momento de visualización - asegúrate de que los callbacks sean rutas de código confiables.