Rate

Proporciona widgets de votación flexibles para entidades de contenido de Drupal, incluyendo nodes y comments, con múltiples plantillas de widgets y funciones de votación completas.

rate
4,079 sites
75
drupal.org

Install

Drupal 11, 10 v3.2.0
composer require 'drupal/rate:^3.2'
Drupal 9 v3.1.0
composer require 'drupal/rate:^3.1'
Drupal 8 v3.0.0
composer require 'drupal/rate:^3.0'

Overview

El módulo Rate ofrece un sistema completo de votación y calificación para sitios Drupal, extendiendo VotingAPI con un amplio conjunto de widgets configurables. Los administradores pueden crear múltiples widgets de votación con diferentes estilos visuales y adjuntarlos a cualquier tipo de entidad de contenido o tipo de comment.

El módulo admite siete plantillas de widgets integradas: Custom (totalmente personalizable), Fivestar (calificación de 5 estrellas), Thumbs Up, Thumbs Up/Down, Number Up/Down, Emotion (reacciones emocionales como divertido/enfadado/enojado) y Yes/No. Cada widget puede configurarse con opciones personalizadas, etiquetas, clases CSS y ajustes de visualización de resultados.

La votación se realiza exclusivamente mediante AJAX para una experiencia de usuario fluida. El módulo incluye mecanismos sofisticados de detección de bots utilizando patrones de agente de usuario, umbrales basados en IP e integración con la API de BotScout.com. Los ajustes de renovación de votos controlan la frecuencia con la que los usuarios pueden cambiar sus votos, con configuraciones separadas para usuarios anónimos y autenticados.

Una función de fecha límite de votación permite a los administradores cerrar la votación en fechas específicas añadiendo un campo de fecha a los tipos de contenido. El módulo proporciona una pestaña de Resultados de Votación en los nodes que muestra desgloses detallados de votos. La integración completa con Views permite mostrar widgets de Rate en cualquier view con opciones de visualización flexibles.

Features

  • Múltiples plantillas de widgets: Custom, Fivestar, Thumbs Up, Thumbs Up/Down, Number Up/Down, Emotion y Yes/No
  • Adjuntar uno o múltiples widgets de Rate a cualquier tipo de entidad de contenido
  • Soporte de votación en comments para todos los tipos de comment
  • Votación exclusivamente por AJAX para una experiencia de usuario fluida
  • Deshacer/cancelar votos haciendo clic en la misma opción nuevamente
  • Detección de bots mediante patrones de agente de usuario, umbrales de IP y API de BotScout.com
  • Ajustes de renovación de votos para usuarios anónimos y autenticados
  • Función de fecha límite de votación con creación automática de campos en entidades
  • Pestaña de Resultados de Votación para nodes mostrando desgloses detallados de votos
  • Integración con Views mediante el plugin de campo Rate Widget
  • Etiquetas de widgets, descripciones y resúmenes de resultados personalizables
  • Controles de posición para etiquetas (en línea/arriba/oculto), descripciones y resultados
  • Modo de widget de solo lectura para visualización sin votación
  • Soporte de migración desde el módulo Rate de Drupal 7
  • Funciones de resultados de votos personalizadas (promedio, conteo, suma) por widget
  • Generación dinámica de permisos por tipo de entidad y bundle

Use Cases

Calificación de Artículos con Sistema de 5 Estrellas

Añade un widget de calificación de 5 estrellas al content type de artículo. Crea un widget fivestar, selecciona 'Article' en entities, configura la visualización para mostrar la calificación promedio y habilita el widget rate en Manage Display del Article. Los usuarios pueden calificar artículos de 1 a 5 estrellas y ver el promedio de la comunidad.

Votación en Comentarios (Me gusta/No me gusta)

Habilita la votación en comentarios con pulgar arriba/abajo. Crea un widget thumbsupdown, marca la columna Comment para el content type deseado, establece los permisos apropiados para 'Can vote on comment_field on node type of article'. Los comentarios mostrarán botones de me gusta/no me gusta con conteo de votos.

Votación Sí/No Estilo Encuesta

Crea un widget de votación simple sí/no para contenido de toma de decisiones. Usa la plantilla yesno, habilítala en un content type personalizado, configura para mostrar conteos de opciones en lugar de votos de usuarios. Ideal para encuestas comunitarias o recolección de comentarios.

Concurso de Votación con Límite de Tiempo

Ejecuta un concurso de votación con fecha límite. Crea un widget con 'Use vote deadline' habilitado. Al editar contenido, establece la fecha límite. Después de que pase la fecha límite, el widget se vuelve de solo lectura automáticamente, preservando los resultados finales.

Reacciones Emocionales (Estilo Facebook)

Añade botones de reacción similares a las redes sociales. Usa la plantilla emotion o crea un widget personalizado con opciones como 'Love', 'Haha', 'Wow', 'Sad', 'Angry'. Configura para mostrar el conteo de cada opción.

Reseñas de Productos en Views

Muestra widgets de rate en una vista de listado de productos. Añade el Field Rate Widget a tu View, selecciona qué Field contiene el ID de la Entity, elige si mostrar el widget completo, solo lectura o solo resumen. Sobrescribe las opciones de visualización según sea necesario para listados de vista compactos.

Tips

  • Usa 'Votingapi setting' para las ventanas de rollover para mantener reglas de votación consistentes en todos los widgets a través de la configuración central de VotingAPI.
  • Crea sugerencias de Theme para rate-widgets-summary para personalizar la visualización de resultados por tipo de widget o content type (ej., rate-widgets-summary--fivestar--article.html.twig).
  • Para sitios de alto tráfico, reduce los umbrales de detección de bots a 10/50 para detectar intentos de manipulación de votos más rápidamente.
  • Usa el hook hook_rate_can_vote() para implementar restricciones de votación personalizadas como requerir autoría del contenido, membresía de grupo u otra lógica de negocio.
  • Al mostrar widgets en Views, usa relaciones a resultados de VotingAPI para habilitar ordenamiento y filtrado por totales o promedios de votos.
  • Deshabilita el registro en producción para mejor rendimiento si no necesitas auditorías de eventos de votos.

Technical Details

Admin Pages 6
Configuración de Rate /admin/config/search/votingapi/rate

Configura los ajustes globales del módulo Rate, incluyendo umbrales de detección de bots e integración con la API de BotScout.com. Esta página permite a los administradores configurar el bloqueo automático de bots para prevenir la manipulación de votos.

Widgets de Rate /admin/structure/rate_widgets

Visualiza y gestiona todos los widgets de Rate definidos en el sistema. Lista todos los widgets con sus nombres de máquina, plantillas y proporciona enlaces para editar o eliminar cada widget.

Añadir widget de Rate /admin/structure/rate/add

Crea un nuevo widget de Rate seleccionando una plantilla y configurando todas las opciones de votación, asignaciones de Entity, ajustes de visualización y preferencias de visualización de resultados.

Editar widget de Rate /admin/structure/rate/{rate_widget}/edit

Modifica la configuración de un widget de Rate existente, incluyendo opciones, asignaciones de Entity, ajustes de visualización y preferencias de resultados.

Cambiar plantilla del widget de Rate /admin/structure/rate/{rate_widget}/template

Cambia el tipo de plantilla de un widget de Rate existente. Advertencia: esto sobrescribirá las opciones actuales y la configuración del tipo de valor.

Resultados de votación de Rate /node/{node}/node-rating

Muestra resultados detallados de votación para un Node específico, incluyendo conteos de votos por opción y sumas, además de un listado de resultados basado en Views. Solo visible para nodes con widgets de Rate adjuntos.

Permissions 4
Administrar opciones de Rate

Gestionar las opciones administrativas del módulo Rate incluyendo la creación, edición y eliminación de widgets de Rate.

Ver página de resultados de Rate

Acceder a la pestaña de Node que muestra estadísticas detalladas de votación y resultados.

Puede votar en {entity_type} de tipo {bundle}

Permiso dinámico generado para cada tipo de Entity y Bundle que tenga un widget de Rate adjunto. Ejemplo: 'Puede votar en Node de tipo article'.

Puede votar en {comment_field} en {entity_type} de tipo {bundle}

Permiso dinámico para votar en comentarios. Generado para cada campo de comentario en tipos de Entity con votación de comentarios habilitada.

Hooks 5
hook_rate_vote_data_alter

Modifica el array de datos del voto antes de que se cree en la base de datos. Permite modificar el tipo de entidad, bundle, tipo de valor y columnas de datos personalizadas del voto.

hook_rate_widget_options_alter

Sobrescribe las opciones (valor, etiqueta, clase) de un widget de Rate antes de renderizarlo. Se invoca antes de generar el formulario de Rate.

hook_rate_value_column

Asigna una columna alternativa de la base de datos para obtener los valores de Rate. Por defecto, los votos se almacenan en la columna 'value', pero los módulos personalizados pueden especificar columnas diferentes.

hook_rate_templates

Define plantillas adicionales o modifica las existentes para los widgets de Rate. Las plantillas especifican el tipo de valor, opciones, personalización y configuración de traducción.

hook_rate_can_vote

Proporciona verificaciones personalizadas para determinar si un usuario puede votar. Permite a los módulos implementar restricciones de votación adicionales más allá de los permisos estándar.

Troubleshooting 6
El widget Rate no aparece en el contenido

Verifica que: 1) El widget rate esté habilitado para el tipo de Entity y bundle correctos en la configuración del widget, 2) El pseudo-field del widget rate esté habilitado en Manage Display para ese content type, 3) El contenido no esté en modo de vista previa (los widgets no se renderizan en contenido nuevo sin guardar).

Los usuarios no pueden votar a pesar de tener acceso de visualización

Asegúrate de que los usuarios tengan el permiso de votación dinámico 'Can vote on [entity_type] type of [bundle]' en /admin/people/permissions. Estos permisos se generan automáticamente cuando los widgets se asignan a tipos de Entity.

Los votos no se están registrando

Verifica si el usuario está siendo detectado como bot. Revisa los umbrales de detección de bots en /admin/config/search/votingapi/rate. También verifica que la configuración de rollover de votos no esté establecida en 'Never' si deseas que los usuarios puedan cambiar sus votos.

El widget aparece deshabilitado después de la fecha límite

Este es el comportamiento esperado cuando 'Use vote deadline' está habilitado y la fecha límite ha pasado. Para volver a habilitar la votación, edita el contenido y cambia o elimina el valor del Field Rate vote deadline.

Los íconos de FontAwesome no se muestran

Asegúrate de que 'Disable fontawesome' esté desmarcado en la configuración de Rate. Si tu Theme proporciona su propio FontAwesome, puede que necesites habilitar esa configuración para evitar conflictos y usar los íconos de tu Theme.

La migración desde Drupal 7 Rate no importa los widgets

Ejecuta primero la migración d7_rate_widgets para importar las configuraciones de widgets, luego ejecuta la migración d7_vote para importar los votos reales. Asegúrate de que las migraciones de VotingAPI también se hayan ejecutado.

Security Notes 4
  • El permiso 'Administer Rate options' solo debe asignarse a roles de administrador de confianza ya que permite crear widgets que afectan a todos los usuarios.
  • La detección de bots ayuda a prevenir la manipulación automatizada de votos pero no es infalible. Considera medidas adicionales para escenarios de votación críticos.
  • La clave API de BotScout.com debe mantenerse confidencial. La clave se valida pero se transmite por HTTP a la API de BotScout.
  • Los widgets Rate en contenido accesible anónimamente pueden estar sujetos a manipulación de votos por usuarios que borran cookies o usan diferentes navegadores.