Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: Jumarras en 04 de Noviembre de 2011, 19:07:57 pm
-
Hola, hace poco he necesitado un sistema de plantillas tipo smarty o algo parecido, es decir, poner por ejemplo {{texto}} en el html y despues lo cambiase por un texto que quiera yo. He estado buscando en internet como hacer algo parecido, pero solo he encontrado una cosilla en taringa, pero tenia unas cosas que no me gustaba, asi que lo edite un poco.
Como no habia nada parecido pro el foro, o por lo menos y ono lo he encontrado, he decidido postearlo para el que quiera.
////////////////////////////////////////////////////////PHP (¿index.php?)
<?php
/////////////////////////////[CLASS]
class TemplateClass{
//Declaraciones
private $_dir = ''; //carpeta de los archivos .tpl (los templates)
private $_file_ext = '.tpl'; //formato de los templates, (default = .tpl)
private $_vars = array(); //variable para las traducciones
private $_delimiters = array('{{', '}}'); //limitadores para saber donde tiene que buscar (ejemplo = {{ejemplo}} )
public function Assign($name, $value){ //funcion para asignar palabras a las traducciones
if(!array_key_exists($name, $this->_vars)) //comprobamos que la palabra no este ya en el array
$this->_vars[$name] = $value; //asignamos la palanra al texto traducido
}
public function GetAssign($name){ //funcion por si queremos obtener la traduccion desde php
return $this->_vars{$name};
}
public function Template($file){ //funcion para traducir las palabras desde html
if( $output = @file_get_contents($this->_dir.$file.$this->_file_ext)){ //comprobamos que el archivo de la plantilla existe
foreach($this->_vars as $name => $value){ //recorremos el array completo y los asignamos
$output = str_replace($this->_delimiters[0].$name.$this->_delimiters[1], $value, $output); //recorremos todo el archivo para cambiar las palabras con los delimitadores a su respectiva traduccion
}
return $output; //mostramos la traduccion
}
else
die("La plantilla no existe.");
}
}
$tpl = new TemplateClass(); //iniciamos la clase
/////////////////////////////[ASIGNAMOS QUE PALABRAS CAMBIAR Y POR CUAL]
$tpl->assign('language', 'Español'); //en el primero se pone la palabra que estaria entre {{ }} y en el otro por cual cambiar. esto si quereis podeis ponerlo en un php a parte y hacer un include despues de la funcion.
/////////////////////////////[ASIGNAMOS EL NOMBRE DE LA PLANTILLA SIN EXTENSION]
echo $tpl->Template('test'); //le decimos a la funcion template cual es la plantilla a mostrar
?>
////////////////////////////////////////////////////////HTML (test.tpl)
{{language}}