Todos los archivos necesarios para este ejemplo están disponibles en
web-modular.rar, incluyendo el
mini-sistema de plantillas que publiqué anteriormente.
Puedes verlo funcionando en:
http://www.e-azteca.com/web-modular/
Para poder crear webs modulares sin complicarnos con sesiones, cookies, redirecciones por header, etc., debemos evitar enviar salida al navegador (espacios, saltos de linea, etiquetas html, etc.) hasta que tengamos lista la información que se desea presentar.
En este ejemplo no incluyo sesiones, ni bases de datos, ni redirecciones, pero sí un formulario de contacto con 3 campos, validados, faltando solo el envío de datos por correo electrónico, ya que hay diferentes formas de hacerlo y solo se requiere insertar el código de tu preferencia.
index.php
Código php:
Ver original<?php
// Definimos los módulos que vamos a utilizar en la web, pueden obtenerse tambien desde base de datos o en un archivo por separado ej: config.php
// clave => array(Nombre de página, archivo a incluir)
'ini' => array('Página principal', 'home.php'), 'emp' => array('La empresa', 'empresa.php'), 'cnt' => array('Contacto', 'contacto.php') );
// Incluimos el mini sistema de plantillas
include 'template.class.php';
$html = new TplParser('index.tpl', 'plantilla/', 'auxiliar/');
// Obtenemos y verificamos el modulo que se va a mostrar o lo asignamos por default
$modulo = (isset($_GET['mod'])) ?
trim($_GET['mod']) : 'ini';
// En esta parte sería más conveniente crear un mensaje de error
// Pero dejamos por el momento que se abra la página principal
if(!isset($modulos[$modulo])) $modulo = 'ini';
// Creamos los valores a reemplazar en la plantilla
'titulo' => $modulos[$modulo][0] . ' - Web Modular',
'meta_keys' => 'Palabras,clave,del,sitio,o,la,página',
'meta_descrip' => 'Esta página es un ejemplo para crear Webs modulares con o sin base de datos',
'tpl_url' => 'plantilla/', // Ruta relativa a la URL del directorio de plantilla actual
'titulo_ventana' => "<h1>Web Modular - {$modulos[$modulo][0]}</h1>",
'menu' => crear_menu($modulo),
'regreso' => crear_menu($modulo, 'regreso')
);
// Asignamos los valores a las etiquetas de la plantilla
$html->assignVars($etiquetas);
// Incluimos el archivo que corresponde a la seccion
$archivo = 'modulos/' . $modulos[$modulo][1];
include $archivo;
else {
$html->tags['subtitulo'] = '<h2>Error del sistema</h2>';
$html->parseAll();
echo '<p>Error, el módulo solicitado no existe en el sistema.</p>';
echo $html->footer();
}
function crear_menu($mod, $ul = 'menu') {
global $modulos;
$ret = "<ul id=\"$ul\">\n";
foreach($modulos as $mk => $mv) {
$act = ($mk == $mod) ? ' class="activo"' : '';
$ret .= "<li><a href=\"index.php?mod=$mk\"$act>{$modulos[$mk][0]}</a></li>\n";
}
$ret .= '</ul>';
return $ret;
}
?>
... Continuará en el siguiente mensaje con archivos internos ...