> Manuales > Taller de PHP

Cómo crear una plantilla en PHP y hacer un sitio homogéneo utilizando sencillos includes.

Vamos a comenzar introduciendo a que nos referimos con plantilla. Una plantilla va a ser un portada genérica para nuestra web, que solo contendrá los menus y elemenos indispensables que además mostraremos en todas las páginas por igual.

¿Para qué queremos esto?

Pues esto nos puede ser sumamente util en algunos casos por dos motivos.

1. Teniendo una plantilla conseguimos un codigo más limpio, ya que los marcos y todo lo que engloba al diseño general pueden ir engoblados en un solo archivo, de modo que cualquier modificicación se puede hacer sobre este mismo archivo afectando de manera inmediata al resto de las páginas. Además de ahorrarnos mucho trabajo ;)

2. Conseguimos una web más uniforme, de modo que el usuario no sé perderá entre diferentes secciones llenas de menús que puedan hacer engorrosa la navegabilidad.

Comencemos

Nuestro código va a ser sumamente simple, para empezar crearemos una tabla que no servirá como marco donde deberemos poner nuestros logotipos, menus, publicidad,.. y lo más importante, el contenido.

Lo que diferencia una plantilla de una página normal, es que el contenido lo vamos a generar de otra forma, vamos a ver como queda inicialmente lo que hemos hecho hasta ahora:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Plantilla en PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="3"><div align="right">Logotipo y Titulo</div></td>
</tr>
<tr>
<td width="20%"><p>Menu principal</p>
<ul>
<li><a href="">Sección 1 </a></li>
<li><a href="">Sección 2 </a></li>
<li><a href="">Sección 3 </a></li>
</ul></td>
<td colspan="2" valign="top">
Aquí irá el contenido
</td>
</tr>
<tr>
<td colspan="3">Pie de página </td>
</tr>
</table>
</body>
</html>

Ya tenemos lista la primera parte, ahora veamos como vamos a utilizar el PHP para poder introducir contenido dentro de esta plantilla.

Para ello vamos a utilizar la función include de PHP. Esta nos permite introducir una página dentro de otra con tan solo indicarle la ruta del archivo, así utilizaremos una variables (que pasaremos por URL) para indicar a que sección queremos acceder.

Por ejemplo, si utilizamos una variable llamada $sec por ejemplo podriamos acceder a una sección utilizando el link "?sec=seccion1", de modo que a continuación en nuestro código y para evitar fallos innecesarios comprobaremos que el archivo 1.html/ 1.htm/ 1.php/... existe y en tal caso lo incluiremos.

Veamos a contianuación el código:

<?php
if(empty($sec))
{
include("presentacion.html");
}
else
{
if(file_exists($sec.".php"))
include($sec.".php");
elseif(file_exists($sec.".html"))
include($sec.".html");
else
echo 'Perdón pero la página solicitada no existe';
}
?>

En este caso hemos comprobado solo si existe el archivo "1.html" y "1.php".

Pero ¡cuidado con este código!, ya que en el caso de que tengamos ambos archivos en nuestro servidor siempre se mostrará el ".php" ya que es el primero que aparece.

De este modo conseguimos finalmente un fichero con la siguiente forma:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Plantilla en PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="3"><div align="right">Logotipo y Titulo</div></td>
</tr>
<tr>
<td width="20%"><p>Menu principal</p>
<ul>
<li><a href="?sec=1">Secci&oacute;n 1 </a></li>
<li><a href="?sec=2">Secci&oacute;n 2 </a></li>
<li><a href="?sec=3">Secci&oacute;n 3 </a></li>
</ul></td>
<td colspan="2" valign="top">
<?php
if(empty($sec))
{
include("presentacion.html");
}
else
{
if(file_exists($sec.".php"))
include($sec.".php");
elseif(file_exists($sec.".html"))
include($sec.".html");
else
echo 'Perdón pero la página solicitada no existe';
}
?>
</td>
</tr>
<tr>
<td colspan="3">Pie de p&aacute;gina </td>
</tr>
</table>
</body>
</html>

Aquí podeis ver el ejemplo, en él existen 3 archivos, el index.php que será nuestra plantilla, 1.php que será una de nuestras secciones, 2.html que será otra de nuestras secciones y el link a la sección tres la hemos dejado que apunte a un archivo que aun no hemos creado para comprobar que nuestra funcion file_exists funciona correctamente.

Bueno y solo comentar un pequeño detalle más, debeis tener cuidado con las páginas que incluis dentro de otras, ya que las cabeceras y los tags van dentro de nuestro index.php, si incluis un archivo con cabeceras dentro de otro creareis un mal código html, que posiblemente no tenga mucho efecto en el visitante pero sí será un obstaculo para encontrar posibles errores o simplemente para leer vuestro propio codigo.

Raúl Jiménez Ortega

Desarrollador web

Manual