RN Risus NovaDocumentación oficial
Risus Nova 2.1.5

index.php y el Front Controller

Análisis del punto de entrada real de Risus Nova y de la selección de controladores mediante action y do.

Actualizada: 2026-07-27Autor: Equipo PHPost3 min de lectura

Responsabilidad de index.php

index.php es el punto de entrada principal de la aplicación pública. Su primera instrucción carga el bootstrap común:

php
require_once 'header.php';

Cuando header.php termina, el sistema ya dispone de configuración, sesión, usuario, servicios principales, tema y Smarty. Solo entonces index.php resuelve la acción solicitada.

Resolución de la acción

El archivo acepta dos parámetros de entrada:

php
$action = $_GET['action'] ?? ($_GET['do'] ?? 'home');

El orden de prioridad es:

  1. action.
  2. do como compatibilidad o ruta alternativa.
  3. home cuando ninguno está presente.

Esta misma compatibilidad se tiene en cuenta durante el modo de mantenimiento de header.php.

Estado compartido

Antes del switch, index.php calcula dos valores usados por varias rutas:

php
$allow_portal = !empty($tsCore->settings['c_allow_portal']);
$is_member    = !empty($tsUser->is_member);

$allow_portal refleja la configuración dinámica del sitio. $is_member representa el estado de autenticación del visitante.

Selección del controlador

El enrutamiento interno se implementa mediante un switch. Cada caso carga un controlador situado en inc/php/.

php
case 'calendario':
    require TS_ROOT . '/inc/php/calendario.php';
    break;

Los controladores disponibles en este archivo son:

| Acción | Controlador o comportamiento | |---|---| | login-salir | Cierra la sesión o redirige al inicio | | login | inc/php/login.php para visitantes | | registro | inc/php/registro.php para visitantes | | portal | inc/php/portal.php si está habilitado y el usuario es miembro; en caso contrario, posts.php | | calendario | inc/php/calendario.php | | chat | inc/php/chat.php | | misiones | inc/php/misiones.php | | premios | inc/php/premios.php | | retos | inc/php/retos.php | | streaming | inc/php/streaming.php | | radio | inc/php/radio.php | | home o valor desconocido | inc/php/posts.php |

Acceso condicionado

Las rutas de autenticación comprueban el estado del usuario antes de cargar el controlador.

php
case 'login':
    if ($is_member) {
        $tsCore->redirectTo($tsCore->settings['url'] . '/');
    } else {
        require TS_ROOT . '/inc/php/login.php';
    }
    break;

El portal añade una segunda condición: debe estar habilitado en la configuración y el visitante debe ser miembro.

Comportamiento predeterminado

El caso default comparte destino con home:

php
case 'home':
default:
    require TS_ROOT . '/inc/php/posts.php';
    break;

Por tanto, una acción desconocida no produce por sí sola un error 404 en este punto: carga el controlador de publicaciones.

Límites de responsabilidad

index.php selecciona el controlador, pero no implementa la lógica de cada módulo. Las consultas, permisos específicos, asignaciones a Smarty y selección de plantilla pertenecen a los archivos de inc/php/ y a sus clases asociadas.

Flujo resumido

text
Petición HTTP
    ↓
Reglas del servidor web
    ↓
index.php
    ↓
header.php
    ↓
action / do / home
    ↓
switch
    ↓
inc/php/<controlador>.php

Relacionado

¿Te ha servido esta página?

Tu respuesta ayuda a mejorar la documentación.