![Afirmando](http://static.forosdelweb.com/fdwtheme/images/smilies/afirmar.gif)
Descripcion: La clase PlantillEvil permite separar el codigo de la presentacion de manera facil y rapida al momento de crear nuestros sitios web.
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
La clase se llama PlantillaEvil
Código PHP:
class PlantillEvil{
/***********************
creada por : acoevil
Version: Beta 1.0
Descripcion: La clase PlantillEvil permite separar el codigo de la presentacion al
momento de crear nuestros sitios web.
.
/***********************/
//Template
private $rutaTemplate;
private $StringTemplate;
//tags del usuario
private $tagsAsigna=array();
private $tagsTemplate=array();
function __construct($rutaTemplate){
$this->rutaTemplate=$rutaTemplate;
if(!file_exists($rutaTemplate)){
die("El archivo " .$this->rutaTemplate . " no existe o no puede abrirse");
}
}
private function tagsTemplate($rutaTemplate){
$this->StringTemplate=file_get_contents($rutaTemplate);
preg_match_all('/\{(.*?)\}/',$this->StringTemplate,$encuentros);
return $encuentros; //Retornamos el array con los tags del template
}
function indicaTags($array=array()){
$this->tagsAsigna=$array;
if(empty($this->tagsAsigna)){
die("Los tags no se han definido");
}else{
$this->tagsTemplate=$this->tagsTemplate($this->rutaTemplate);
}
}
function muestraPlantilla(){
for($n=0;$n<count($this->tagsTemplate,COUNT_RECURSIVE);$n++){
foreach($this->tagsAsigna as $key => $value){
if($this->tagsTemplate[1][$n]==$key){
$this->StringTemplate=str_replace($this->tagsTemplate[0][$n],$value,$this->StringTemplate);
}
}
}
echo $this->StringTemplate;
}
}
Modo de uso-> Por ejemplo tenemos una plantilla con el nombre plantilla.tpl la cual queremos utlizar en nuestro sistema de plantillas.
NOTA: La extencion .tpl es la que generalmente se utiliza en las plantillas aunque podemos colocar la extencion ya se ha .html o tpl.
Ok, primero que todo empezemos creando nuestra plantilla
plantilla.tpl
Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <meta name="author" content=""> <title>{titulo}</title> <style>@import url("templatecss.css");</style> </head> <body> <div id="contenedor"> <div id="fecha">Fecha actual {fecha}</div> <div id="hora">La hora actual {hora}</div> <div id="funciones_uso">Dame tu nombre {nombre_f}</div> </div> </body> </html>
Ok, ya tenemos nuestra plantilla creada.
si miramos con cuidado el codigo html encontramos algo como esto {fecha} {hora} {nombre_f} estos nos servira para indicar donde queremos generar codigo php.
ejemplo: {fecha} se reeemplazaria y mostraria la fecha actual asi como las otras etiquetas encerradas en llaves { }
Lo siguiente es crear un archivo con el nombre useplantilla.php o el nombre que queramos
Código PHP:
require_once('plantillaevil.php'); // hacemos un require a la clase
//despues creamos la fecha la hora y nombre_f que son las que queremos reemplazar en la plantilla
$fecha=date('d/m/Y');
$hora=date('h:m:s');
function nombre(){
return 'Acoevil';
}
//creamos una instancia de la clase PlantillaEvil y le pasamos como parametro el nombre del template y su debida extencion en este caso .tpl
$plantilla=new PlantillEvil("template.tpl");
//Por medio de objeto accedemos al metodo [B]indicat_tags [/B]donde le pasaremos un array asociativo donde en el key indicaremos lo que queremos reemplazar (debe tener el mismo nombre que tiene en la plantilla) y el value seria el valor por el que queremos reemplazar ese tag
$plantilla->indicaTags(array(
'hora'=>$hora,
'fecha'=>$fecha,
'titulo'=>'Separando el codigo de la presentacion',
'nombre_f'=>nombre()));
//Por ultimo mostramos la plantilla con los cambios realizados
$plantilla->muestraPlantilla();
Espero que les guste, cualquier duda, critica (constructiva)o comentario seran bien recibidos