Phpost
COMPLEMENTOS Sistema de Encuestas en Posts v1.0 - Versión para impresión

+- Phpost (https://phpost.es)
+-- Foro: Risus Nova 2.0 (https://phpost.es/forum-150.html)
+--- Foro: Complementos (https://phpost.es/forum-164.html)
+--- Tema: COMPLEMENTOS Sistema de Encuestas en Posts v1.0 (/thread-984.html)



Sistema de Encuestas en Posts v1.0 - Tronlar - 05-27-2026

Sistema de Encuestas en Posts v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost


Sistema de Encuestas en Posts v1.0 para Risus Nova 2.0: el Sistema de Encuestas en Posts. Al crear un post puedes añadir una encuesta opcional con hasta 8 opciones. Los usuarios votan directamente desde el post y los resultados se actualizan en tiempo real sin recargar la página.


Capturas
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]


📊 ¿Qué incluye?
   


🛠️ Instalación

Paso 1 — Ejecutar el instalador

Sube la carpeta install/ a la raíz del sitio y accede a:

 
Código:
Registrate o inicia tu sesión para ver este contenido


Pulsa Instalar ahora. El instalador creará 3 tablas:
⚠️ Elimina la carpeta install/ del servidor cuando termine.

Paso 2 — Subir los archivos
 
Código:
inc/class/c.encuestas.php          →  inc/class/
inc/php/ajax/ajax.encuesta.php     →  inc/php/ajax/
themes/default/css/encuesta.css   →  themes/default/css/
themes/default/templates/modules/m.encuesta.tpl      →  themes/default/templates/modules/
themes/default/templates/modules/m.encuesta_form.tpl →  themes/default/templates/modules/

Paso 3 — c.posts.php

Abre inc/class/c.posts.php y busca el return $postID; al final de la función newPost(). Añade justo antes:
 
Código:
// ── Encuesta ──
if (!empty($_POST['enc_pregunta']) && !empty($_POST['enc_opciones'])) {
    require_once TS_CLASS . 'c.encuestas.php';
    $tsEncObj = new tsEncuestas();
    $tsEncObj->crearEncuesta(
        $postID,
        $_POST['enc_pregunta'],
        $_POST['enc_opciones'],
        (int)($_POST['enc_expira_dias'] ?? 0)
    );
}
// ────────────
return $postID;


Paso 4 — posts.php

Abre inc/php/posts.php y busca:
 
Código:
// PAGINAS
$total = $tsPost['post_comments'];

Añade justo antes:
 
Código:
// ── Encuesta ──
require_once TS_CLASS . 'c.encuestas.php';
$tsEncObj   = new tsEncuestas();
$tsEncuesta = $tsEncObj->getEncuesta($tsPost['post_id']);
if ($tsEncuesta && !empty($tsEncuesta['opciones'])) {
    foreach ($tsEncuesta['opciones'] as &$op) {
        $op['pct'] = $tsEncuesta['total_votos'] > 0
            ? round($op['votos'] / $tsEncuesta['total_votos'] * 100, 1)
            : 0;
    }
    unset($op);
}
$ip         = $tsCore->getIP();
$tsYaVoto   = $tsEncuesta ? $tsEncObj->yaVoto($tsEncuesta['enc_id'], $tsUser->uid, $ip) : false;
$tsMiOpcion = $tsEncuesta ? $tsEncObj->opcionVotada($tsEncuesta['enc_id'], $tsUser->uid, $ip) : 0;
$smarty->assign('tsEncuesta',  $tsEncuesta);
$smarty->assign('tsYaVoto',    $tsYaVoto);
$smarty->assign('tsMiOpcion',  $tsMiOpcion);
// ────────────


Paso 5 — Mostrar la encuesta en el post

Abre themes/default/templates/modules/m.posts_content.tpl y busca:
 
Código:
<div class="compartir-risus-banner">

Añade justo antes:
 
Código:
{include file='modules/m.encuesta.tpl'}


Paso 6 — Formulario al crear un post

Abre themes/default/templates/modules/m.agregar.form.tpl y busca el bloque de opciones de publicación (donde está el checkbox de "Solo usuarios registrados"). Añade después del cierre de ese bloque:

 
Código:
{include file='modules/m.encuesta_form.tpl'}


Paso 7 — Borrar la caché

Borra el contenido de la carpeta /cache/ del sitio.


🗑️ Desinstalar
 
Código:
DROP TABLE IF EXISTS p_encuestas;
DROP TABLE IF EXISTS p_encuestas_opciones;
DROP TABLE IF EXISTS p_encuestas_votos;


Elimina los archivos subidos y quita los hooks añadidos en los pasos 3, 4, 5 y 6.