Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/08/2011, 22:37
Avatar de hasdpk
hasdpk
 
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 8 meses
Puntos: 297
Respuesta: Como cargar código en <head> usando mvc.

Yo te voy a pasar cómo tengo hecho el modelo/visto/controlador, eso sí, a mi modo XD:

/index.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.     //Librearía de avisos/errores.
  4.     if (!@include_once('./lib/avisos/error.php')) { echo "<h3>¡Hay un fallo en la página!</h3>Te importaría mandar un email a [email protected] con el asunto \"#0001\", ya que retóricamente es nuestra librería de aviso de errores el que ha fallado. <em>¡Gracias!"; exit; }
  5.  
  6.     //Cargar información importante del "motor".
  7.     if (!@include_once('./include.php')) { error_envmail("0007"); exit; }
  8.  
  9.     //Consultas de [0] "Últimos añadidos" y [1] "Últimos comentarios".
  10.     $consulta = array('SELECT cod, accesible, nombre, categoria, municipio, cod_usr FROM lugares ORDER BY fecha DESC LIMIT 0, 6',
  11.                       'SELECT comentarios.fecha, comentario, usuario, usuarios.cod AS cod_usr, lugares.cod AS cod_lugar, nombre, accesible FROM comentarios INNER JOIN usuarios ON usuarios.cod = comentarios.cod_usr INNER JOIN lugares ON lugares.cod = cod_lugar ORDER BY comentarios.fecha DESC LIMIT 0, 5');
  12.  
  13.     $consulta = consulta_bd($consulta);
  14.    
  15.     define(ultimos_anadidos, $consulta[0]);
  16.     define(ultimos_comentarios, $consulta[1]);
  17.    
  18.     //Cargar plantilla de la portada.
  19.     if (!@include_once('./theme/portada.tpl')) { error_envmail("0008", false); }
  20.  
  21. ?>

/include.php
Código PHP:
Ver original
  1. <?php
  2.    
  3.     //Configuración de la aplicación.
  4.     if (!@include_once('./config.php')) { error_envmail("0002"); exit; }
  5.  
  6.     //Incluir funciones.
  7.     if (!@include_once('./funciones.php')) { error_envmail("0003"); exit; }
  8.    
  9.     //Comprobar si mantenimiento está activado.
  10.     $mantenimiento = unserialize(mysql_result(consulta_bd("SELECT valor FROM opciones WHERE opcion = 'mantenimiento'"), 0));
  11.        
  12.     if ($mantenimiento[0] == true) {
  13.        
  14.         //Etiquetas del theme.
  15.         define(e_tpl_mantto_titulo, $mantenimiento[1]);
  16.         define(e_tpl_mantto_texto, $mantenimiento[2]);
  17.  
  18.         include_once('./theme/mantenimiento.tpl');
  19.  
  20.         exit;
  21.    
  22.     }
  23.    
  24.     //¿Es usuario?.
  25.     define(es_usuario, false);
  26.    
  27.     //ID del usuario.
  28.     define(mi_id, NULL);
  29.    
  30. ?>

/funciones.php
Código PHP:
Ver original
  1. <?php
  2.  
  3.     /************** INDICE **************
  4.  
  5.     1. Conexiones con base de datos.
  6.    
  7.         1.1. - Conectar a la Base de Datos y realizar consulta.         / Rubén Martín - 30/07/2011.
  8.        
  9.     3. Plantilla (Genericas).
  10.    
  11.         3.1. - Incluir cabeza.                                          / Rubén Martín - 01/08/2011.
  12.         3.2. - Incluir pie.                                             / Rubén Martín - 01/08/2011.
  13.         3.3. - Avatar de usuario.                                       / Rubén Martín - 03/08/2011.
  14.         3.4. - Imagen si/no                                             / Rubén Martín - 11/08/2011.
  15.         3.5. - Reordenar fecha (Sistema Español)                        / Rubén Martín - 12/08/2011.
  16.         3.6. - Twitter (Timeline).                                      / Rubén Martín - 15/08/2011.
  17.        
  18.         // Lugares (lugares.php). //
  19.        
  20.         3.7. - Imagen principal.                                        / Rubén Martín - 21/08/2011.
  21.         3.8. - Descripción/comentario autor.                            / Rubén Martín - 24/08/2011.
  22.        
  23.     4. Seguridad.
  24.    
  25.         4.1. - Evitar SQL Injection.                                    / Rubén Martín - 16/08/2011.
  26.        
  27.  
  28.     ************************************/
  29.    
  30.    
  31.    
  32.    
  33.     /************* 3. - PLANTILLAS (GENERICAS) *************/  
  34.    
  35.     //3.1. - Incluir cabeza.
  36.     function tpl_cabeza($css) {
  37.    
  38.         if (file_exists("./theme/css/$css")) {
  39.        
  40.             define(tpl_css, $css);
  41.            
  42.         } else {
  43.        
  44.             error_envmail("0011", false);
  45.        
  46.         }
  47.        
  48.         if ($css == 'lugares.css') { $anadir = '<link href="' . tpl_galeria_ppal (cod_lugar, true) . '" rel="image_src" />'; }
  49.    
  50.         if (!@include_once('./theme/header.tpl')) { error_envmail("0009", false); }
  51.        
  52.     }
  53.    
  54.    
  55.     //3.2. - Incluir pie.
  56.     function tpl_pie() {
  57.         if (!@include_once('./theme/footer.tpl')) { error_envmail("0010", false); }
  58.     }
  59.    
  60. ?>

/theme/header.tpl
Código PHP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.  
  4.     <head>
  5.    
  6.         <link rel="stylesheet" type="text/css" href="./theme/css/common.css" />
  7.         <link rel="stylesheet" type="text/css" href="./theme/css/<?php echo tpl_css; ?>" />
  8.        
  9.         <?php echo $anadir; ?>
  10.    
  11.         <title>Gran Canaria Accesible</title>
  12.    
  13.     </head>
  14.    
  15.     <body>
  16.    
  17.     <div style="background-color: #ffc4c4; border-bottom: 1px solid #ff4e4e; width: 100%; padding: 6px 0 6px 0;">
  18.        
  19.         <div style="font-family: Tahoma; font-size: 11px; width: 1004px; margin: auto; padding-left: 10px;">
  20.        
  21.             La información aquí mostrada no concuerda con la realidad y/o ser veraz. Es contenido de prueba usada por el equipo de desarrollo y generado por el mismo o por los usuarios.
  22.        
  23.         </div>
  24.        
  25.     </div>
  26.    
  27.     <div style="background-color: #fffcd6; width: 100%; padding: 6px 0 6px 0; border-bottom: 1px solid #fce095;">
  28.    
  29.         <div style="font-family: Tahoma; font-size: 11px; width: 1004px; margin: auto; padding-left: 10px;">
  30.      
  31.             <strong>¡Bienvenido!</strong> &nbsp;Estás viendo la página del grupo de desarrollo. Sientete libre de <em>romper lo que quieras</em> y recordarte que tus acciones no repercutirán en la página principal.
  32.             <a href="http://grancanariaccesible.com" style="text-decoration: none; color: blue;">Volver a la página principal.</a>
  33.    
  34.         </div>
  35.    
  36.     </div>
  37.    
  38.         <div id="pagina">

/theme/portada.tpl
Código PHP:
Ver original
  1. <?php tpl_cabeza("portada.css"); ?>
  2.  
  3. <div id="contenido" class="left">
  4.  
  5.     <div id="box" class="ultm-lugares">
  6.  
  7.         <h2>Lugares añadidos</h2>
  8.  
  9.         <ul>
  10.  
  11.             <?php while ($a = mysql_fetch_assoc(ultimos_anadidos)) { ?>
  12.            
  13.                 <li>
  14.                
  15.                     <a href="./perfil.php?cod=<?php echo $a['cod_usr']; ?>"><? tpl_usr_avatar($a['cod_usr'], 0); ?></a>
  16.                    
  17.                     <div>
  18.                    
  19.                         <a href="./lugares.php?cod=<?php echo $a['cod']; ?>" class="lugar" style="background-image: url('<?php tpl_sino($a['accesible'], 0, true); ?>');"><?php echo $a['nombre']; ?></a>
  20.                         <a href="#" class="categoria"><?php echo $a['categoria']; ?></a>
  21.                         <a href="#" class="municipio"><?php echo $a['municipio']; ?></a>
  22.                        
  23.                     </div>
  24.                    
  25.                 </li>
  26.  
  27.             <?php } ?>
  28.            
  29.         </ul>
  30.        
  31.     </div>
  32.  
  33. </div>
  34.  
  35. <div id="sidebar" class="right">
  36.  
  37.     <div id="box" class="ultm-comentarios">
  38.  
  39.         <h2>Últimos comentarios</h2>
  40.  
  41.         <ul>
  42.  
  43.             <?php while ($a = mysql_fetch_assoc(ultimos_comentarios)) { ?>
  44.            
  45.                 <li>
  46.  
  47.                     <a href="./perfil.php?cod=<?php echo $a['cod_usr']; ?>"><? tpl_usr_avatar($a['cod_usr'], 1); ?></a>
  48.                    
  49.                     <div>
  50.                    
  51.                         <a href="./perfil.php?cod=<?php echo $a['cod_usr']; ?>" class="nombre"><? echo $a['usuario']; ?></a><span class="en">en</span><br />
  52.                         <a href="./lugares.php?cod=<?php echo $a['cod_lugar']; ?>" class="lugar" style="background-image: url('<?php tpl_sino($a['accesible'], 0, true); ?>');"><?php echo $a['nombre']; ?></a>
  53.                         <span class="fecha"><?php tpl_fecha($a['fecha'], true, true); ?></span>
  54.                         <?php echo $a['comentario']; ?>
  55.                        
  56.                     </div>
  57.                    
  58.                 </li>
  59.      
  60.             <?php } ?>
  61.  
  62.         </ul>
  63.        
  64.     </div>
  65.    
  66. </div>
  67.  
  68. <?php tpl_pie(); ?>

Bueno, te explico el funcionamiento de mi "sistema", que a mi hasta ahora me ha funcionado:

En el index.php una de las primeras cosas que hago es cargar información importante (include.php) y dentro de las misma está funciones.php, en ese archivo si te fijas hay una función que se llama "tpl_cabeza", que es en donde cargo la cabeza (cabeza.tpl) y ves el modo en el cargo el css (por ejemplo).

En el archivo "portada.tpl" puedes comprobar como cargo la cabeza.

ahora tu pregunta, ¿Cómo añades un <meta> a la cabeza, por ejemplo? pues he añadido en header.tpl el código "<?php echo $anadir; ?>" y en portada.tpl sólo tengo que declarar la información que quiero poner del siguiente modo "$anadir = '<meta name="description" content="prueba" />';" y me aparece en la cabeza.

Espero haberme explicado bien, aunque creo que no ^^