Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/03/2009, 18:48
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
[Aporte] Webs modulares

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
  1. <?php
  2. define('CONSTANTE', 1);
  3. // 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
  4. // clave => array(Nombre de página, archivo a incluir)
  5. $modulos = array(
  6.     'ini' => array('Página principal', 'home.php'),
  7.     'emp' => array('La empresa', 'empresa.php'),
  8.     'cnt' => array('Contacto', 'contacto.php')
  9. );
  10.  
  11. // Incluimos el mini sistema de plantillas
  12. include 'template.class.php';
  13. $html = new TplParser('index.tpl', 'plantilla/', 'auxiliar/');
  14.  
  15. // Obtenemos y verificamos el modulo que se va a mostrar o lo asignamos por default
  16. $modulo = (isset($_GET['mod'])) ? trim($_GET['mod']) : 'ini';
  17.  
  18. // En esta parte sería más conveniente crear un mensaje de error
  19. // Pero dejamos por el momento que se abra la página principal
  20. if(!isset($modulos[$modulo]))
  21.     $modulo = 'ini';
  22.  
  23. // Creamos los valores a reemplazar en la plantilla
  24. $etiquetas = array(
  25.     'titulo' => $modulos[$modulo][0] . ' - Web Modular',
  26.     'meta_keys' => 'Palabras,clave,del,sitio,o,la,página',
  27.     'meta_descrip' => 'Esta página es un ejemplo para crear Webs modulares con o sin base de datos',
  28.     'tpl_url' => 'plantilla/', // Ruta relativa a la URL del directorio de plantilla actual
  29.     'titulo_ventana' => "<h1>Web Modular - {$modulos[$modulo][0]}</h1>",
  30.     'menu' => crear_menu($modulo),
  31.     'regreso' => crear_menu($modulo, 'regreso')
  32. );
  33.  
  34. // Asignamos los valores a las etiquetas de la plantilla
  35. $html->assignVars($etiquetas);
  36.  
  37. // Incluimos el archivo que corresponde a la seccion
  38. $archivo = 'modulos/' . $modulos[$modulo][1];
  39. if(file_exists($archivo))
  40.     include $archivo;
  41. else {
  42.     $html->tags['subtitulo'] = '<h2>Error del sistema</h2>';
  43.     $html->parseAll();
  44.     echo $html->header();
  45.     echo '<p>Error, el módulo solicitado no existe en el sistema.</p>';
  46.     echo $html->footer();
  47. }
  48.  
  49.  
  50. function crear_menu($mod, $ul = 'menu') {
  51.     global $modulos;
  52.     $ret = "<ul id=\"$ul\">\n";
  53.     foreach($modulos as $mk => $mv) {
  54.         $act = ($mk == $mod) ? ' class="activo"' : '';
  55.         $ret .= "<li><a href=\"index.php?mod=$mk\"$act>{$modulos[$mk][0]}</a></li>\n";
  56.     }
  57.     $ret .= '</ul>';
  58.     return $ret;
  59. }
  60.  
  61. ?>

... Continuará en el siguiente mensaje con archivos internos ...
__________________
- León, Guanajuato
- GV-Foto