Hace 1 hora
Posts Programados v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost
Nuevo módulo para Risus Nova 2.0 — PHPost
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]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
[img]Registrate o inicia tu sesión para ver este contenido[/img]
Permite a administradores y moderadores programar la publicación de posts en una fecha y hora concretas. El post se guarda como "programado" y se publica automáticamente cuando llega la hora, sin que nadie tenga que hacer nada.
🕐 Características
- Solo admins y moderadores pueden programar posts
- Mínimo 5 minutos en el futuro, máximo 1 año
- Publicación automática al cargar cualquier página
- Panel en el admin para ver todos los posts programados
- Publicar manualmente antes de la hora con un clic
- Cancelar devuelve el post a borradores
- Validación estricta de fechas — no se puede manipular desde el frontend
📋 Requisitos
- Risus Nova 2.0 instalado y funcionando
- PHP 8.0+
- MySQL 5.7+ / MariaDB 10.4+
🛠️ Instalación
Paso 1 — Ejecutar el instalador
Sube la carpeta install/ a la raíz y accede a:
Código:
Registrate o inicia tu sesión para ver este contenidoPulsa Instalar ahora. Añade la columna post_publish_at en la tabla p_posts.
⚠️ Elimina la carpeta install/ cuando termine.
Paso 2 — Subir los archivos
Código:
inc/class/c.scheduled.php → inc/class/
inc/php/ajax/ajax.scheduled.php → inc/php/ajax/
themes/default/templates/modules/m.scheduled_form.tpl → themes/default/templates/modules/
themes/default/templates/modules/m.scheduled_admin.tpl → themes/default/templates/admin_mods/Paso 3 — En c.posts.php
Busca el return $postID; al final de newPost() y añade justo antes:
Código:
// ── Posts programados ──
if (!empty($_POST['post_publish_at']) && $tsUser->is_admod) {
require_once TS_CLASS . 'c.scheduled.php';
$tsSched = new tsScheduled();
$ts = tsScheduled::parseFecha($_POST['post_publish_at']);
if ($ts > 0) {
$tsSched->programar($postID, $ts);
}
}
// ────────────────────────Paso 4 — En header.php
Abre header.php de la raíz y añade al final, antes del cierre:
Código:
// ── Publicar posts programados ──
require_once TS_CLASS . 'c.scheduled.php';
(new tsScheduled())->publicarPendientes();
// ────────────────────────────────Paso 5 — En m.agregar.form.tpl
Buscar:
{if ($tsUser->is_admod > 0 || $tsUser->permisos.moedpo) && $tsDraft.b_title && $tsDraft.b_user != $tsUser->uid}
Arriba agregar:
Código:
{include file='modules/m.scheduled_form.tpl'}Paso 6 — Panel en el admin
En admin.php añade antes de :
Código PHP:
} elseif($action == 'feed'){
Agregar:
Código:
} elseif($action == 'scheduled'){
require_once TS_CLASS . 'c.scheduled.php';
$tsSched = new tsScheduled();
$smarty->assign('tsProgramados', $tsSched->getProgramados());En t.admin.tpl añade antes del {/if} final:
Código:
{elseif $tsAction == 'scheduled'}
{include file='admin_mods/m.scheduled_admin.tpl'}En m.admin_sidemenu.tpl añade donde prefieras:
Código:
<li id="a_scheduled">
<a href="{$tsConfig.url}/admin/scheduled">
<span class="nav-icon">🕐</span> Posts Programados
</a>
</li>Paso 7 — Borrar la caché
Borra el contenido de la carpeta /cache/ del sitio.
🗑️ Desinstalar
Código:
ALTER TABLE p_posts DROP COLUMN post_publish_at;Elimina los archivos subidos y quita los hooks añadidos.
Descarga
Mediafire
http://Registrate o inicia tu sesión par... contenido
Google Drive
http://Registrate o inicia tu sesión par... contenido
¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.
Mediafire
http://Registrate o inicia tu sesión par... contenido
Google Drive
http://Registrate o inicia tu sesión par... contenido
¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.