Foros del Web » Programando para Internet » PHP »

[APORTE] sistema de plantillas facil de usar

Estas en el tema de [APORTE] sistema de plantillas facil de usar en el foro de PHP en Foros del Web. Hola quetal este es mi sistema de plantillas, espero que les guste. Descripcion: La clase PlantillEvil permite separar el codigo de la presentacion de manera ...
  #1 (permalink)  
Antiguo 27/05/2009, 16:46
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
[APORTE] sistema de plantillas facil de usar

Hola quetal este es mi sistema de plantillas, espero que les guste.

Descripcion: La clase PlantillEvil permite separar el codigo de la presentacion de manera facil y rapida al momento de crear nuestros sitios web.

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
  #2 (permalink)  
Antiguo 27/05/2009, 16:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: [APORTE] sistema de plantillas facil de usar

bueno, yo ya había visto algunos "aportes" en el foro similares, aparte de este... no es nuevo, pero seguro será útil para la comunidad....

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/05/2009, 17:03
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
Respuesta: [APORTE] sistema de plantillas facil de usar

Muchas gracias por tu comentario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:41.