Phpost

Versión completa: Sistema de Encuestas en Posts v1.0
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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?
 
  • Encuesta opcional al crear cualquier post
  • Hasta 8 opciones por encuesta
  • Duración configurable — se puede poner fecha de cierre o sin límite
  • Resultados en tiempo real con barras de progreso animadas
  • Anti-doble voto por usuario y por IP
  • Los usuarios no registrados ven los resultados pero no pueden votar
  • Encuestas cerradas siguen mostrando resultados
  • Al votar el formulario se transforma en resultados sin recargar
 


🛠️ 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:
  • p_encuestas — encuestas ligadas a posts
  • p_encuestas_opciones — opciones de cada encuesta
  • p_encuestas_votos — registro de votos por usuario e IP

⚠️ 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.

 
Descarga
http://Registrate o inicia tu sesión par...0.rar/file

http://Registrate o inicia tu sesión par... contenido




¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.