Sunteți pe pagina 1din 3

Creacin y uso de plantillas o templates en PHP

En este pequeo tutorial vamos a tratar sobre como trabajar plantillas (templates) con php, vamos a
decir unas pocas pero grandes ventajas de trabajar de esta manera:
Separamos el XHTML o HTML del cdigo php, es decir, nuestra plantilla no tendr codigo php,
asi que a la hora de disear solo nos preocuparemos por eso, de disear nicamente.
Mejor organizacin de los archivos.
Nota: la plantilla no contendr cdigo php, cualquier cdigo php que contenga este simplemente ser
ignorado.
Son dos pero muy buenas, es decir, el diseador que se encargue de disear y el programador que se
encargue de programar.

Explicacin
Ahora vamos a ver como lograr esto, simplemente identificaremos la zona que php editara con un
identificador encerrado por llaves "{}", para verlo ms claro, empecemos con hacer nuestra plantilla,
como dije anteriormente solo ser cdigo XHTML o HTML
<html>
<head>

<title>Esto es una prueba de uso de plantillas</title>

</head>
<body>
</body>
</html>

<p>Mi {variable} con plantilla y php </p>

Como vemos simplemente cdigo HTML, php se encargar de parsear variable que es lo que esta
encerrado entre llaves, para esto utilizaremos la clase Plantilla hecha por Dano, basndose en el sistema
de plantillas de phpBB, solo necesitamos pasarle el nombre de nuestra plantilla, las lista de variables
que vayamos a parsear e invocar el metodo(o funcin como lo entiendas mejor) que se encargar de
hacer el parseo, este es cdigo de dicha clase.
<?
class plantilla{
function plantilla($template_file){
$this->tpl_file = 'plantillas/' . $template_file . '.tpl';
}
function asigna_variables($vars){
$this->vars= (empty($this->vars)) ? $vars : $this->vars . $vars;
}
function muestra(){
if (!($this->fd = @fopen($this->tpl_file, 'r'))) {
sostenedor_error('error al abrir la plantilla ' . $this>tpl_file);
} else{

>tpl_file));

$this->template_file = fread($this->fd, filesize($this-

fclose($this->fd);
$this->mihtml = $this->template_file;
$this->mihtml = str_replace ("'", "\'", $this->mihtml);
$this->mihtml = preg_replace('#\{([a-z0-9\-_]*?)\}#is',
"' . $\\1 . '", $this->mihtml);
reset ($this->vars);
while (list($key, $val) = each($this->vars)) {
$$key = $val;
}
eval("\$this->mihtml = '$this->mihtml';");
reset ($this->vars);
while (list($key, $val) = each($this->vars)) {
unset($$key);
}
$this->mihtml=str_replace ("\'", "'", $this->mihtml);
echo $this->mihtml;
}
}
}
?>

El constructor plantilla tiene un parametro, su valor ser el nombre del archivo de la plantilla (sin la
extensin) que vayamos a parsear, es decir, si guardamos la plantilla con el nombre miplantilla.tpl solo
pondremos como parametro miplantilla, teniendo el nombre del archivo se lo asignamos a una variable
y le concatenamos la extensin que usemos para nuestras plantillas (las extensiones de las plantillas
pueden ser: .dwt, .tpl, .html, etc) la ms usada y comn es .tpl , aunque dreamweaver las guarda por
defecto como .dwt
Ahora el primer mtodo (o funcin como lo entiendas mejor) de nuestra clase ser asigna_variables,
que se encargara de recibir los nombres de las variables que vayamos a parsear, en caso de este ejemplo
sera variable (ver cdigo html de la plantilla).
El siguiente mtodo ser muestra es nuestro parseador como tal, es decir, este identificar las variables
obtenidas en el anterior metodo que hayan en la plantilla y lo sustituira por el valor que nosotros
queramos.
Veamos con un simple ejemplo como podemos usarla, antes de esto vamos a explicar como deben
organizados nuestros archivos, primero creamos una carpeta llamada plantillas que contendr todos los
archivos de las plantillas diseadas por nosotros, al mismo nivel de la carpeta pondremos el archivo
(clase_plantilla) con el script de la clase plantilla y los scripts php que la vayan a usar, una imagen de
la estructura seria algo asi:

Dentro de la carperta plantillas tendriamos esto:

Ahora dicho esto veamos como utilizar la clase, creamos nuestro script php llamado holaMundo.php ,
que contendr solo esto:
<?
include("clase_plantilla.php");
//al Pasar como parametro holaMundo, asumimos que en la carpeta plantillas existe
un archivo de nombre holaMundo.tpl
$Contenido=new Plantilla("holaMundo");
$Contenido->asigna_variables(array(
"variable" => "holaMundo "
));
//$ContenidoString contiene nuestra plantilla, ya con las variables asignadas,
fcil no?
$ContenidoString = $Contenido->muestra();
echo $ContenidoString;
?>

Incluimos el cdigo de nuestra clase(vease la primera lnea del cdigo), luego creamos un objeto
Plantilla solo pasndole el nombre del archivo de nuestra plantilla (en nuestro ejemplo holaMundo,
recuerdo sin la extensin .tpl).
Luego invocamos el metodo de asigna_variables de nuestro objeto y le pasaremos la lista de variables
que tiene nuestra plantilla, para el caso del ejemplo solo es variable y le asignamos su valor.
Despues parseamos nuestra plantilla recogiendo el resultado en una variable($ContenidoString) que
obtenemos al invocar el mtodo muestra de nuestro objeto ($Contenido).
Por ltimo imprimimos nuestra variable($ContenidoString).
Ahora hecho todo esto para ver el resultado solo abriremos desde el browser el archivo
holaMundo.php.
Cabe destacar que la clase maneja los errores de plantillas inexistentes, para hacer uso de esto solo
necesitamos crear una plantilla con el nombre error.tpl y en tal caso de que se trate de parsear una
plantilla que no exista, nos muestre una pagina de error, por ejemplo algo como esta:
<html>
<head>

<title>Esto es una prueba de uso de plantillas</title>

</head>
<body>
</body>
</html>

<p>Mi {variable} con plantilla y php </p>

S-ar putea să vă placă și