Radioactivity
Un módulo de Drupal que proporciona tipos de campo para rastrear la popularidad del contenido a través de niveles de energía que aumentan con las visitas a la página y disminuyen con el tiempo utilizando perfiles de decaimiento configurables.
radioactivity
Install
composer require 'drupal/radioactivity:^4.1'
composer require 'drupal/radioactivity:^4.0'
Overview
El módulo Radioactivity permite a los constructores de sitios medir y rastrear la popularidad de su contenido a través de un innovador sistema basado en energía. Cuando se visualiza el contenido, se "emite" energía y se agrega al campo de radioactividad del contenido. Con el tiempo, esta energía puede decaer según perfiles configurables, permitiendo rankings de popularidad dinámicos que reflejan tanto las vistas históricas como el interés reciente.
El módulo proporciona dos tipos de campo: el campo "Radioactivity Reference" recomendado (que almacena energía en una entidad separada para un mejor flujo de trabajo editorial) y el campo "Radioactivity" heredado (obsoleto, almacena energía directamente en la entidad). Combinado con el módulo Views, los constructores de sitios pueden crear listas de contenido popular, artículos en tendencia o elementos más vistos con decaimiento automático del contenido antiguo.
Las capacidades clave incluyen tres perfiles de energía (Count para conteo simple de vistas, Linear para decaimiento basado en tiempo y Decay para decaimiento exponencial de vida media), granularidad configurable para el procesamiento de cron, umbrales de corte para limitar la sobrecarga de procesamiento e integración completa con Views para crear listados basados en popularidad. El módulo también soporta sitios multilingües a través del tipo de campo de referencia.
Features
- Tipo de campo Radioactivity Reference que almacena valores de energía en entidades separadas, previniendo conflictos editoriales durante las actualizaciones de cron
- Tipo de campo Radioactivity heredado (obsoleto) que almacena energía directamente en las entidades de contenido
- Tres opciones de perfil de energía: Count (solo aumenta), Linear (disminuye 1/segundo) y Decay (disminución del 50% por vida media)
- Granularidad configurable para controlar con qué frecuencia se procesan los cálculos de decaimiento durante cron
- Configuración de tiempo de vida media para el perfil de decaimiento exponencial para ajustar las tasas de decaimiento de popularidad
- Umbral de corte para poner automáticamente a cero los valores de energía bajos y reducir la sobrecarga de procesamiento
- Configuración de energía predeterminada para dar al nuevo contenido un impulso inicial de popularidad
- Formateador Emitter que agrega energía cuando se muestra el contenido y opcionalmente muestra el valor de energía actual
- Formateador Value que muestra solo el nivel de energía actual sin emitir energía adicional
- Integración con Views a través de relaciones de entidad para crear listas de contenido ordenadas por popularidad
- Soporte multilingüe para el campo Radioactivity Reference con seguimiento de popularidad por idioma o compartido
- Integración con el módulo Rules con el evento 'Energy is below cutoff' para flujos de trabajo automatizados
- Opciones de almacenamiento flexibles: base de datos (predeterminado) o almacenamiento REST basado en archivos para sitios de alto tráfico
- Comando Drush para corregir campos de referencia vacíos en contenido existente
- Procesamiento basado en cola para prevenir problemas de memoria al manejar grandes cantidades de entidades
Use Cases
Bloque de Artículos Populares
Cree un bloque mostrando los 10 artículos más populares de su sitio. Agregue un campo Radioactivity Reference a su tipo de contenido Article con perfil de decaimiento. Configure el formateador Emitter en el modo de vista Full content. Cree una View de Articles con una relación al campo de radioactividad, ordenada por Energy descendente, limitada a 10 elementos. Coloque la vista como un bloque en su barra lateral. Los artículos que reciban más vistas tendrán mayor energía y aparecerán arriba, mientras que los artículos más antiguos decaerán y saldrán de la lista.
Sección de Temas en Tendencia
Construya una función de temas en tendencia que destaque contenido ganando atención reciente. Use el perfil Decay con una vida media corta (ej. 12 horas) para que el contenido deba recibir vistas continuamente para mantenerse 'caliente'. Establezca un valor de corte más alto para filtrar contenido con engagement mínimo. El resultado es una lista dinámica que responde rápidamente al interés actual del usuario.
Contador de Vistas Simple
Rastree el total de vistas de página para contenido sin ningún decaimiento. Use el perfil Count que solo aumenta la energía y nunca disminuye. Esto proporciona un contador de vistas acumulativo simple. Muestre el valor de energía usando el formateador Value para mostrar el total de vistas a los usuarios.
Panel Editorial
Cree una vista de backend para editores mostrando la popularidad del contenido. Use el formateador Value (no Emitter) para que ver el panel no infle artificialmente las puntuaciones de popularidad. Combine con otros filtros (tipo de contenido, fecha de publicación, autor) para ayudar a los editores a entender el rendimiento del contenido.
Seguimiento de Popularidad Multilingüe
Rastree la popularidad por separado para cada versión de idioma del contenido. Habilite la traducción de campo en el campo Radioactivity Reference. Cada traducción de idioma tendrá su propia entidad de radioactividad con valores de energía independientes. Esto permite un seguimiento preciso de popularidad para sitios multilingües donde la popularidad del contenido puede variar por idioma.
Tips
- Comience con configuraciones conservadoras: vida media alta (1 semana), corte bajo (0.1), granularidad moderada (15 minutos). Ajuste según el comportamiento observado.
- Use diferentes valores de emisión de energía para diferentes modos de vista para ponderar las interacciones de manera diferente (ej. vista de página completa: 10, teaser: 1).
- Monitoree el tamaño de la tabla radioactivity_incident. Si crece demasiado entre ejecuciones de cron, ejecute cron más frecuentemente o use almacenamiento REST.
- Para sitios de alto tráfico, considere la opción de almacenamiento REST para mover la recolección de incidentes fuera de la base de datos principal.
- Siempre use el campo Radioactivity Reference para nuevas implementaciones - el campo heredado está obsoleto y será eliminado.
- Establezca el valor de energía predeterminado para dar al nuevo contenido un 'impulso' en los listados de popularidad antes de que haya acumulado vistas.
Technical Details
Hooks 5
hook_cron
Procesa el decaimiento de radioactividad e incidentes de emisión durante las ejecuciones de cron. El decaimiento se procesa según la configuración de granularidad, mientras que los incidentes se procesan en cada ejecución de cron.
hook_entity_load
Inicializa los valores del campo de radioactividad cuando se cargan las entidades, asegurando que los valores de energía estén disponibles para su visualización.
hook_entity_presave
Maneja la lógica relacionada con radioactividad durante el guardado de entidades, incluyendo actualizaciones de timestamp y prevención de revisiones innecesarias durante actualizaciones de radioactividad.
hook_page_attachments_alter
Inyecta la URL del endpoint de radioactividad en drupalSettings para la biblioteca JavaScript de trigger.
hook_queue_info_alter
Asegura que los queue workers de radioactividad se procesen en el orden correcto (incidentes antes del decaimiento).
Drush Commands 1
drush radioactivity:fix-references
Corrige campos de referencia de radioactividad vacíos creando entidades de radioactividad y actualizando las referencias. Esencial al agregar un campo de referencia de radioactividad a un tipo de contenido que ya tiene contenido existente.
Troubleshooting 5
1) Verifique que el formateador Emitter esté configurado en el modo de visualización que se está viendo. 2) Revise la pestaña de red del navegador para solicitudes POST a /radioactivity/emit. 3) Verifique que el permiso 'access content' esté otorgado. 4) Ejecute cron para procesar incidentes pendientes. 5) Revise los logs de Drupal para errores.
1) Verifique que el campo use el perfil Linear o Decay (el perfil Count nunca disminuye). 2) Asegúrese de que cron se ejecute regularmente (al menos una vez por período de granularidad). 3) Verifique si el umbral de granularidad se ha alcanzado desde el último cron. 4) Establezca granularidad a 1 para pruebas para procesar decaimiento en cada ejecución de cron.
Ejecute 'drush radioactivity:fix-references' para crear entidades de radioactividad para contenido existente. Esto es requerido al agregar el campo a tipos de contenido con datos existentes.
Ejecute 'drush radioactivity:fix-references' para crear las entidades de radioactividad faltantes. Este error indica que existen campos de referencia sin entidades de radioactividad correspondientes.
1) Aumente la granularidad para reducir la frecuencia de cálculo de decaimiento. 2) Aumente el valor de corte para reducir el número de entidades procesadas. 3) Considere usar almacenamiento REST para la recolección de incidentes para reducir escrituras a base de datos durante alto tráfico.
Security Notes 3
- Los datos de emisión se validan usando un hash generado a partir del hash salt del sitio para prevenir aumentos de popularidad falsificados.
- El endpoint /radioactivity/emit requiere el permiso 'access content', previniendo emisión anónima si ese permiso no está otorgado.
- Los endpoints de almacenamiento REST deben protegerse apropiadamente si se exponen externamente.