Crea y gestiona encuestas con WebBlocks Polls
Haz una pregunta concreta a tus visitantes y recoge las respuestas en tu propia web. WebBlocks Polls añade una pantalla para gestionar encuestas y un bloque nativo Poll para mostrarlas en páginas del CMS. Puedes permitir una o varias opciones, decidir cuándo aparecen los resultados agregados y exportar los totales por opción como CSV. Los resultados usan barras horizontales con porcentajes y recuentos legibles. No necesitas una cuenta de encuestas externa ni código de inserción.
El ejemplo es Northstar Studio. Primero, los visitantes eligen el siguiente taller: Photography, Ceramics o Illustration. Después, otra encuesta de selección múltiple pregunta por sus intereses. Crearás un borrador, guardarás traducciones, publicarás la encuesta, la colocarás en una página, enviarás votos de prueba reales, consultarás resultados, cerrarás la encuesta y comprobarás un periodo de votación futuro.
Las imágenes usan el paquete publicado Polls 0.1.6 sobre WebBlocks CMS 1.106.5, con WebBlocks UI 2.32.0 incluido, interfaz inglesa, tema claro y contenido ficticio del estudio. El ejemplo contiene un voto real de selección única y otro de selección múltiple; las cifras son demostraciones, no resultados de investigación.
Polls 0.1.6 usa el idioma solicitado de la página del CMS para el texto, los controles y los mensajes de la encuesta. La política After closing muestra los resultados tras un cierre explícito o cuando una encuesta publicada alcanza su hora de finalización. La guía comprueba la vista traducida y un periodo futuro, además del flujo habitual en inglés.
Consulta los requisitos e integración en la referencia de Polls. Para la instalación general, empieza por Sistema de plugins.
Antes de empezar
Prepara una web de prueba y una cuenta Super admin para instalar el plugin. El paquete publicado declara compatibilidad con PHP ^8.3, CMS ^1.106.5 y Laravel ^13.0. Tu versión del CMS puede requerir un PHP más reciente; esta guía usa PHP 8.4. Revisa el resultado para tu servidor real en el catálogo oficial de Polls.
También necesitas una página que puedas editar y publicar, y permiso para gestionar encuestas. La web principal del ejemplo es Northstar Studio. Las páginas son Choose our next workshop, en /workshop-vote, y What would you like to learn?, en /workshop-options.
Las encuestas pertenecen a una web. En 0.1.6, la lista y el formulario normales no tienen selector de web; se utiliza la web principal accesible salvo que se indique un contexto explícito de Polls. Cambiar la web seleccionada en Pages no sustituye comprobar la propiedad de la encuesta. Para una integración multisitio, usa el contexto explícito de la referencia de la API de Polls. El bloque de una página solo enumera encuestas de la web de esa página.
Decide el uso de las respuestas, quién consultará los totales y cuándo terminará la votación. Mantén la pregunta breve, las opciones diferenciadas y evita recoger información impropia de una encuesta pública. Polls sirve para comentarios sencillos; la huella del visitante no demuestra que cada voto pertenezca a una persona distinta verificada.
1. Instala y activa Polls
- Abre System → Plugins como Super admin.
- Elige Browse Plugin Catalog y busca WebBlocks Polls.
- Revisa versión, compatibilidad y notas antes de Install from Catalog.
- Si el administrador proporciona el archivo publicado de confianza, selecciónalo en Plugin ZIP y pulsa Upload Plugin ZIP.
- Revisa el paquete instalado y actívalo.
El ejemplo instala el ZIP oficial publicado. Un plugin recién instalado permanece desactivado hasta que lo actives.
Abre los detalles y elige Enable Plugin. La instalación y activación del CMS actual aplican los cambios de base de datos del plugin. Antes de recoger votos, confirma Enabled, un estado saludable y tablas listas. Resuelve primero cualquier aviso de compatibilidad o migración.
La barra lateral contiene ahora un grupo Polls con una entrada Polls. Ábrela. Una instalación nueva muestra No polls have been created yet. y Add poll.
2. Asigna los permisos adecuados
Polls separa consulta, gestión y exportación:
| Permiso | Qué permite | Operador habitual |
|---|---|---|
| View polls (webblocks-polls.view) | Abrir la lista de encuestas de la web. | Quien supervisa disponibilidad y totales de votos. |
| Manage polls (webblocks-polls.manage) | Crear y editar preguntas, opciones, estado y programación. | Editor responsable de la encuesta. |
| Export poll results (webblocks-polls.export) | Descargar los totales agregados por opción como CSV. | Quien necesita los resultados fuera del CMS. |
Concede al editor los permisos de consulta y gestión necesarios. Añade el de exportación de forma deliberada. El acceso a la web es un límite independiente: los permisos del plugin no dan acceso a todas las encuestas de todas las webs. Revisa Roles y permisos antes de modificar un rol compartido.
Para colocar el bloque Poll, el editor también necesita los permisos normales de páginas y bloques. Crear la encuesta y editar la página que la contiene son tareas distintas.
3. Crea la primera encuesta como borrador
Elige Add poll. La primera tarjeta controla la identidad y disponibilidad:
| Campo | Ejemplo Northstar | Cómo usarlo |
|---|---|---|
| Name | Next Northstar workshop | Etiqueta interna para operadores, común a todos los idiomas. |
| Handle | next-workshop | Identificador estable en minúsculas. Usa letras, números y guiones simples entre palabras. |
| Status | Draft | Mantén la votación deshabilitada mientras revisas la pregunta. |
| Choice mode | Single choice | Cada voto contiene exactamente una opción. |
| Show results | After voting | El visitante ve los totales tras votar correctamente en la sesión actual. |
| Starts at / Ends at | Vacíos en este primer ejemplo | Sin restricción adicional de fechas una vez publicada la encuesta. |
El handle no es la dirección de la página. El bloque lo guarda para localizar la encuesta; evita cambiarlo después de colocarla. Usa un nombre comprensible para el equipo y un handle estable.
Desplázate hasta Poll copy e introduce:
| Campo | Ejemplo |
|---|---|
| Locale | en |
| Question | Which workshop should we run next? |
| Description | Help Northstar Studio choose its next community workshop. |
| Choice 1 | Photography |
| Choice 2 | Ceramics |
| Choice 3 | Illustration |
| Choice 4 | Dejar vacío. |
La pregunta, la descripción opcional y las etiquetas son el texto que ven los visitantes. En 0.1.6, el formulario normal ofrece cuatro filas; este editor no tiene control Add choice. Debes rellenar al menos dos etiquetas. El contrato de integración admite hasta veinte filas, pero eso no añade veinte filas a este formulario.
Elige Save poll y confirma Poll saved.. Vuelve a la lista y comprueba el handle, el estado Draft y cero votos.
Nombre y pregunta admiten hasta 255 caracteres; handle, 100; descripción opcional, 2 000; y cada etiqueta, 255. Una pregunta breve y etiquetas concisas se leen mejor en móvil.
4. Guarda otro idioma sin sustituir el original
Vuelve a abrir Next Northstar workshop. Locale indica la copia de idioma que se escribirá al guardar; no es el selector del idioma de administración. Escribir otro código no carga el texto existente de ese idioma.
Para añadir el ejemplo turco:
- Cambia Locale de
enatr. - Sustituye la pregunta por Bir sonraki atölyemiz hangisi olsun?.
- Traduce la descripción y las filas correspondientes: Fotoğrafçılık, Seramik, İllüstrasyon.
- Mantén cada opción en su fila y deja la cuarta opcional vacía.
- Conserva los valores compartidos previstos de nombre, handle, modo y disponibilidad y elige Save poll.
Guardar una traducción también envía los campos operativos compartidos del formulario. Revísalos antes para no publicar o reprogramar accidentalmente al añadir texto. La dirección de edición guardada conserva ?locale=tr. Usa esa vista al editar turco; el enlace normal de la lista vuelve al idioma predeterminado del panel.
La pregunta y las etiquetas inglesas permanecen guardadas. El bloque público usa el idioma solicitado de la página para pregunta, descripción, opciones, controles y mensajes. Si falta una traducción, se utiliza el idioma de respaldo configurado y después la primera copia disponible. Traduce la pregunta y todas las opciones para cada idioma que publiques.
Tras publicar encuesta y página en los siguientes pasos, comprueba tanto la ruta traducida como la inglesa. El idioma público de la encuesta es independiente del idioma de administración del operador. Consulta Añadir un idioma a una web para activar idiomas y traducir el resto de la página.
5. Elige la política de resultados públicos
Show results cambia lo que muestra el bloque Poll. No elimina los totales guardados ni sustituye los permisos de los operadores.
| Ajuste | Comportamiento real en 0.1.6 | Uso práctico |
|---|---|---|
| Always | Muestra totales en lugar del formulario, incluso con la votación abierta. | Mostrar resultados. No lo uses cuando el bloque deba ofrecer un formulario para votar. |
| After voting | Muestra totales si la sesión actual ya votó; si no, ofrece el formulario solo mientras esté abierta. | Opción predeterminada probada para una encuesta pública normal. |
| After closing | Muestra totales de una encuesta explícitamente Closed o Published cuya hora final llegó. No incluye Draft ni una que abra en el futuro. | Ocultar resultados durante la votación y mostrarlos al terminar. |
| Never | No muestra resultados agregados públicos. Una vez que la sesión vota, no vuelve a ofrecer el formulario. | Recoger respuestas sin publicar totales. |
El aviso This poll is closed. también puede aparecer si el visitante ya votó y la política oculta resultados, o si aún no llegó el inicio. Ese mensaje genérico no demuestra por sí solo que el operador eligiera Status → Closed. Revisa juntos estado, fechas y política.
Para el primer ejercicio, mantén After voting. Ofrece un formulario antes del primer envío y resultados después.
6. Publica la encuesta
Abre la encuesta inglesa guardada, cambia Status a Published y elige Save poll. Deja las dos fechas vacías en esta primera prueba. Vuelve a la lista y confirma Published junto a next-workshop.
Publicar la encuesta permite seleccionarla en el bloque de la página. No crea una página, añade el bloque ni publica la página. Una encuesta solo acepta votos cuando está Published y se cumplen las condiciones de inicio y final configuradas.
7. Añade el bloque Poll nativo a una página
Abre la página en Pages, elige Edit Blocks para su área Main y localiza el contenedor de la encuesta. Nuestra página ya tiene título e introducción. Para empezar desde cero, consulta Página, diseño, área y bloque y Crear una página.
- Usa Add child block en el contenedor o Add Block en un lugar apto.
- Busca Poll en el catálogo de bloques.
- Selecciona Poll, descrito como Places a published poll on a page..
En Block Fields, elige Next Northstar workshop en el selector Poll. Pulsa Save New Block.
El selector enumera encuestas Published de la web de la página. Si falta una, comprueba primero su estado y web propietaria. Una fecha de inicio futura no la elimina del selector; sigue controlando cuándo el formulario público admite votos.
El bloque referencia la encuesta original en vez de copiar pregunta y opciones en la página. Las modificaciones posteriores pueden afectar a todas las páginas que usen el mismo handle. Crea una encuesta nueva para una campaña nueva, en vez de reutilizar otra con votos existentes.
8. Previsualiza y publica la página
Abre la Preview guardada. Comprueba pregunta, descripción, botones de opción correctos y política de resultados. El bloque Poll y sus bloques superiores deben estar habilitados para publicación.
Trata una vista previa que contiene una encuesta Published activa como una encuesta interactiva. No supongas que un envío de prueba es una simulación: puede registrar un voto real. Aquí inspeccionamos la vista previa y votamos solo desde la página publicada localmente.
Cuando esté lista, sigue Publicar una página. En Overview, usa Publish si tu rol lo permite o sigue la revisión de tu equipo. Abre después View Page y prueba la ruta pública real.
En nuestra página publicada, elige Photography. Solo puede seleccionarse un botón de opción a la vez.
9. Envía un voto e interpreta el resultado
Pulsa Vote una vez y confirma Thank you. Your vote was recorded.. Con After voting, los resultados agregados sustituyen al formulario en la sesión actual.
Nuestro único voto de prueba da a Photography 100% (1 votes) y cero a las demás opciones. Su barra ocupa toda la pista; una opción con valor cero conserva la pista vacía. Cada barra usa la misma escala 0–100%. Encima siguen visibles nombre, porcentaje y número de votos. El ejemplo demuestra el flujo, pero no permite concluir preferencias reales de los visitantes.
Recarga la página. El resultado continúa disponible en la misma sesión y el formulario no reaparece. Su visibilidad tras votar depende del estado de sesión; un navegador que vuelva después de cambiar la sesión puede ver otra cosa. No prometas acceso personal permanente a los resultados.
Abre la traducción turca para revisar el texto anterior. Un visitante que no ha votado ve Bir sonraki atölyemiz hangisi olsun?, etiquetas traducidas y el botón Oy ver, como abajo. Si la sesión ya votó, ve resultados en turco con After voting. Ambas rutas apuntan a la misma encuesta; cambiar el idioma no crea otro voto.
Como comparación visual independiente, la imagen siguiente usa una encuesta sintética de 20 votos: 12 para Photography, 6 para Ceramics y 2 para Illustration. Las barras muestran 60%, 30% y 10% en la misma escala. Este conjunto está separado del ejemplo de un voto; no es una encuesta real del público ni modifica los recuentos restantes.
Las barras usan medidores HTML nativos con el estilo de la primitiva compartida de WebBlocks UI. No necesitan una biblioteca de gráficos ni JavaScript para representar sus valores. Conserva el texto visible al revisar resultados; color y longitud de barra son apoyos visuales.
10. Comprueba los votos y exporta CSV
Vuelve a Polls en el panel. La columna Votes cuenta papeletas registradas. Nuestra encuesta de selección única muestra ahora una.
Para los totales por opción, abre la encuesta guardada y baja hasta después de las opciones. Elige Export CSV junto a Save poll. Requiere permiso Export poll results y acceso a la web propietaria.
La exportación contiene datos agregados: etiqueta de opción y número de selecciones. No es un listado de votantes individuales ni una exportación de sus direcciones IP. El ejemplo inglés de selección única produce:
Choice,Votes
Photography,1
Ceramics,0
Illustration,0
El editor normal de 0.1.6 no ofrece un panel separado de resultados por opción. Usa el recuento de papeletas de la lista, el CSV para los totales o el endpoint agregado autorizado de la referencia de la API de Polls. El ajuste público Show results no elimina la exportación autorizada.
11. Crea una encuesta de selección múltiple separada
Crea otra encuesta para conservar el significado y los votos de la primera. Nuestro segundo ejemplo usa:
| Campo | Valor |
|---|---|
| Name | Workshop learning interests |
| Handle | learning-interests |
| Status | Published |
| Choice mode | Multiple choice |
| Show results | After voting |
| Question | Which topics would you like to learn? |
| Description | Choose every workshop topic that interests you. |
| Choices | Photography; Ceramics; Illustration |
Coloca un bloque Poll en What would you like to learn?, selecciona la segunda encuesta, previsualiza y publica la página. El formulario público usa ahora casillas. Selecciona Photography e Illustration.
Pulsa Vote. Una papeleta registra ambas selecciones.
El porcentaje de cada opción usa como denominador el número de papeletas. Una de una eligió Photography y una de una eligió Illustration; ambas muestran 100% y barras completas. En selección múltiple, los porcentajes no tienen que sumar 100%: las barras son independientes y no segmentos de una única barra del 100%. La lista sigue contando una papeleta; el CSV contiene dos votos por opción seleccionada.
12. Comprende la protección frente a votos repetidos
Tras votar correctamente, la sesión actual deja de recibir el formulario normal. Si Back en el navegador restaura el formulario anterior y se envía de nuevo, el servidor comprueba también la huella. Nuestro reenvío devuelve You have already voted in this poll. y el total de papeletas sigue siendo uno.
El plugin utiliza protección CSRF, límites de solicitudes por ruta y una huella HMAC seudónima basada en encuesta, sesión, IP de la solicitud y agente de usuario. No guarda la IP sin procesar como campo de la papeleta. Es una medida disuasoria práctica, no identidad verificada: cambiar la sesión u otros datos de la huella puede permitir otro voto. Usa un proceso apropiado basado en identidad cuando sea esencial un voto verificado por persona.
Si el visitante recibe una respuesta de límite de solicitudes, detén los reenvíos y espera el plazo normal. No desactives el límite para eludirla. Practica votos y repeticiones en una encuesta desechable; no añadas votos de ensayo a resultados que vayas a utilizar.
13. Cierra la encuesta y decide qué sigue visible
Al terminar, vuelve a abrir la encuesta, elige Status → Closed y pulsa Save poll. Cerrar conserva los votos y las traducciones.
En el primer ejemplo elegimos además Show results → Never para mostrar una encuesta cerrada sin totales públicos.
Recarga la página pública. La pregunta permanece, el formulario no está disponible y el bloque muestra This poll is closed..
Si quieres publicar los totales conservados al acabar, elige una política adecuada. Con After closing en esta encuesta realmente Closed, el bloque muestra los recuentos guardados y ningún formulario.
Para reabrir la misma encuesta, elige Status → Published, comprueba fechas y política y guarda. Los votos permanecen; reabrir no reinicia a los votantes anteriores ni crea una campaña nueva. Verificamos la reapertura conservando el voto original. Crea otra encuesta y handle cuando una nueva pregunta necesite totales independientes.
14. Programa con cuidado el periodo de votación
La encuesta admite votos solo si está Published, el inicio está vacío o ya llegó y el final está vacío o sigue en el futuro. El final debe ser posterior al inicio. Cerrar manualmente detiene la votación independientemente de las fechas.
Usa fechas futuras apropiadas para tu evento. El ejemplo separado Scheduled workshop usa noviembre de 2030 para mantenerse claramente en el futuro durante la demostración. El formulario no indica zona horaria junto a las fechas; confirma la zona de la aplicación con el administrador en vez de asumir que la zona de visualización de la web convierte las entradas automáticamente.
Con After closing, antes de abrir esta encuesta futura muestra un aviso de cierre sin totales ni formulario. Al comenzar el periodo Published, los visitantes pueden votar y los resultados siguen ocultos. Al llegar el final, los resultados guardados se hacen visibles. Un estado explícito Closed también permite mostrarlos; Draft no, aunque sus fechas hayan pasado.
Elige After closing para posponer resultados hasta el final, After voting para mostrarlos a la sesión actual tras votar o Never para ocultar totales públicos. Revisa la página real en cada límite. Always muestra resultados en lugar del formulario; no resuelve la recogida de votos.
El cálculo de abierto/cerrado se realiza durante las solicitudes; no necesitas otra tarea para cambiar el estado en cada límite. Prueba el comportamiento real de inicio y final en tu servidor antes de confiar en la programación. Revisa también las cachés entre visitante y aplicación para evitar que una página antigua represente mal el estado actual.
Solución de problemas
| Síntoma | Qué comprobar |
|---|---|
| Polls no aparece en la barra lateral | Instalación, activación, compatibilidad, permiso View polls y acceso a la web. |
| Hay migraciones del plugin pendientes | Usa un servidor actual compatible y resuelve el resultado registrado de instalación de base de datos antes de recoger votos. |
| No se guarda la encuesta | Nombre obligatorio, handle válido y estable, idioma, pregunta, al menos dos etiquetas y final posterior al inicio. |
| La encuesta no aparece en el selector | Estado Published y propiedad de la web de la página. El selector normal no ofrece Draft ni Closed. |
| La página no tiene encuesta | Selección guardada del bloque, handle estable, web correcta, bloques superiores habilitados y plugin activo. |
| La encuesta está Published pero la página no está disponible | Publicar la página es independiente de publicar la encuesta. Abre su ruta real tras publicarla. |
| Aparecen resultados en lugar del formulario | Show results → Always, After closing con Closed explícito o tras el final de Published, o sesión que ya votó con After voting. |
| Los resultados aparecen antes de lo esperado | Comprueba Always, sesión que ya votó con After voting, Closed explícito y final guardado. After closing espera al cierre real o final de Published. |
| El bloque dice cerrada pero está Published | Fechas futuras/pasadas, estado de voto de la sesión y política de resultados. El aviso es genérico. |
| La página traducida muestra texto de respaldo | Idioma solicitado, idioma guardado de la encuesta, etiquetas correspondientes y Polls 0.1.6 o posterior. Traduce aparte la página circundante. |
| Hay texto de resultados pero faltan barras horizontales | Usa Polls 0.1.6 con CMS 1.106.5 o posterior y comprueba la carga de WebBlocks UI CSS incluido. Actualiza cachés antiguas tras actualizar. |
| Los porcentajes sumados superan 100% | En selección múltiple se calculan por papeleta para cada opción. Una papeleta puede seleccionar varias. |
| Export CSV no está disponible o está prohibido | Guarda la encuesta y revisa permiso de exportación y acceso a la web. Contiene totales por opción, no un directorio de votantes. |
Termina con un lanzamiento controlado
Antes de invitar a visitantes reales, revisa web propietaria, handle estable, texto, modo, permisos, fechas y política de resultados. Comprueba por separado la página y su ruta publicada. Envía un voto en una encuesta desechable, valida el recuento y CSV y después crea otra para los totales que realmente usarás.
Si el lanzamiento es multilingüe o programado, verifica la vista de visitante en cada idioma y en los límites temporales relevantes. Revisa la vista real y los recuentos registrados, además del formulario guardado. Asigna a un operador el cierre, la exportación y la adecuación de los resultados públicos a su audiencia.
Continúa con la referencia de Polls para integración, Roles y permisos para acceso o Publicar una página para el flujo de páginas.