Foros del Web » Programando para Internet » PHP »

Clase templates en PHP

Estas en el tema de Clase templates en PHP en el foro de PHP en Foros del Web. Buenas gente del foro: Acudo a vosotros para ver si me dais una solución a un problema que llevo tiempo buscando una solución. Quiero utilizar ...
  #1 (permalink)  
Antiguo 26/11/2009, 06:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 10
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta Clase templates en PHP

Buenas gente del foro:

Acudo a vosotros para ver si me dais una solución a un problema que llevo tiempo buscando una solución.
Quiero utilizar la clase templates para crear mis propias plantillas para mis páginas web dinámicas pero no soy capaz de hacerlas funcionar bien por que no las implemento bien o por que tenga que configurar alguna directiva del servidor.
Os pido que me deis alguna idea o me pongais algún ejemplo.

Gracias.

Un saludo.
  #2 (permalink)  
Antiguo 26/11/2009, 06:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Clase templates en PHP

Yo trabajo con templates.. te paso la classe.. funciona perfect :B saludos!


Código php:
Ver original
  1. <?php
  2. class plantilla {
  3.     function plantilla($template_file) {
  4.         $this->html_file = $template_file;
  5.     }
  6.     function asigna_variables($vars) {
  7.         $this->vars = (empty ( $this->vars )) ? $vars : $this->vars . $vars;
  8.     }
  9.     function muestra() {
  10.         if (! ($this->fd = @fopen ( $this->html_file, 'r' ))) {
  11.             sostenedor_error ( 'error al abrir la plantilla ' . $this->html_file );
  12.         } else {
  13.             $this->template_file = fread ( $this->fd, filesize ( $this->html_file ) );
  14.             fclose ( $this->fd );
  15.             $this->mihtml = $this->template_file;
  16.             $this->mihtml = str_replace ( "'", "\'", $this->mihtml );
  17.             $this->mihtml = preg_replace ( '#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml );
  18.             reset ( $this->vars );
  19.             while ( list ( $key, $val ) = each ( $this->vars ) ) {
  20.                 $$key = $val;
  21.             }
  22.             eval ( "\$this->mihtml = '$this->mihtml';" );
  23.             reset ( $this->vars );
  24.             while ( list ( $key, $val ) = each ( $this->vars ) ) {
  25.                 unset ( $$key );
  26.             }
  27.             $this->mihtml = str_replace ( "\'", "'", $this->mihtml );
  28.             echo $this->mihtml;
  29.         }
  30.     }
  31.     function devuelve() {
  32.         if (! ($this->fd = @fopen ( $this->html_file, 'r' ))) {
  33.             self::sostenedor_error ( 'error al abrir la plantilla ' . $this->html_file );
  34.         } else {
  35.             $this->template_file = fread ( $this->fd, filesize ( $this->html_file ) );
  36.             fclose ( $this->fd );
  37.             $this->mihtml = $this->template_file;
  38.             $this->mihtml = str_replace ( "'", "\'", $this->mihtml );
  39.             $this->mihtml = preg_replace ( '#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml );
  40.             reset ( $this->vars );
  41.             while ( list ( $key, $val ) = each ( $this->vars ) ) {
  42.                 $$key = $val;
  43.             }
  44.             eval ( "\$this->mihtml = '$this->mihtml';" );
  45.             reset ( $this->vars );
  46.             while ( list ( $key, $val ) = each ( $this->vars ) ) {
  47.                 unset ( $$key );
  48.             }
  49.             $this->mihtml = str_replace ( "\'", "'", $this->mihtml );
  50.             return $this->mihtml;
  51.         }
  52.     }
  53.    
  54.     function sostenedor_error($error) {
  55.         $miplantilla = new plantilla ( "error.html" );
  56.         $miplantilla->asigna_variables ( array ('ERROR' => $error ) );
  57.         return $miplantilla->muestra ();
  58.     }
  59.     function variable_plantilla($variable) {
  60.         $this->template_file = $variable;
  61.         $this->mihtml = $this->template_file;
  62.         $this->mihtml = str_replace ( "'", "\'", $this->mihtml );
  63.         $this->mihtml = preg_replace ( '#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml );
  64.         reset ( $this->vars );
  65.         while ( list ( $key, $val ) = each ( $this->vars ) ) {
  66.             $$key = $val;
  67.         }
  68.         eval ( "\$this->mihtml = '$this->mihtml';" );
  69.         reset ( $this->vars );
  70.         while ( list ( $key, $val ) = each ( $this->vars ) ) {
  71.             unset ( $$key );
  72.         }
  73.         $this->mihtml = str_replace ( "\'", "'", $this->mihtml );
  74.         return $this->mihtml;
  75.     }
  76. }
  77. ?>
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 26/11/2009, 09:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase templates en PHP

Hidek1, lo que me sorprende es este método..
Código PHP:
function asigna_variables($vars) {
    
$this->vars = (empty ( $this->vars )) ? $vars $this->vars $vars;

si $this->vars es un arreglo... ¿para que lo concatenas con punto??


además tienes varios errores, pero mi principal pregunta es...

¿porque tanta asignación a variables y eval()??

luego... si muestra(), devuelve() y variable_plantilla() tienen un 80% de comportamiento idéntico.. ¿porque repites el mismo código tres veces??

etc, etc..
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 26/11/2009, 09:42
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Clase templates en PHP

xD ni idea es el que usan aca en el trabajo nunca lo e modificado :P

pero de que sirve sirve

PD: le echare un ojo para ver lo que me dices.. quiza me suban el sueldo :D

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 26/11/2009, 09:50
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Clase templates en PHP

el metodo de uso es este
Código php:
Ver original
  1. include_once ("common.Class/class.Plantilla.php");
  2. $Contenido = new Plantilla ( "Modules/module.Personal/template.personal_ingresar_paso0.html" );
  3. $Contenido->asigna_variables ( array ("rut" => $rut ) );
  4. $ContenidoString = $Contenido->devuelve ();
  5. echo $ContenidoString;
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 26/11/2009, 09:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 10
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Clase templates en PHP

En los archivos que he visto yo se utiliza una extensión especial para las plantillas tales como .tpl o .ihtml. en el código de utilización no los he visto.

¿Siendo .hmtl funcionan tambien?

Gracias por vuestras respuestas!

Salu2.
  #7 (permalink)  
Antiguo 26/11/2009, 10:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase templates en PHP

en realidad la extensión no interesa mucho, aplica para *.js, *.css, *.html, *.phtml, *.php, *.tpl, etc...

ya que es suficiente un archivo de texto con la plantilla, sin importar la extensión el resultado es idéntico...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 26/11/2009, 10:02
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Clase templates en PHP

da lo mismo la extensión .. lo que ase la classe es tomar el texto dentro del archivo
busca los string entre {} y los reemplaza por lo que le entregues en asigna_variables

yo personalmente recomiendo este tipo de proceso, ya que permite trabajar diseño y programación por separado.. al igual que modificaciones visuales mucho mas rápidas...

también permite interactuar variables entre php y javascript de manera fácil y otras ventajas..

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #9 (permalink)  
Antiguo 26/11/2009, 10:05
 
Fecha de Ingreso: noviembre-2009
Mensajes: 10
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Clase templates en PHP

Ya que estamos con el tema de las plantillas:
¿Creeis que mejora más las plantillas con Smarty o que o que con la clase plantilla es más sencillo y lo otro quizá para cosas muy específicas?
  #10 (permalink)  
Antiguo 26/11/2009, 10:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Clase templates en PHP

no e trabajado con smarty nunca.. no podría darte una referencia.. pero a mi en lo personal me basta con la classe en los proyectos que he hecho.. aunque ahora que pateketrueke me dijo eso la revisare para ver si puedo hacerle mejoras :B
__________________
More about me...
~ @rhyudek1
~ Github
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 21:51.