Foros del Web » Programando para Internet » PHP »

Templates engine, como parsear arrays?

Estas en el tema de Templates engine, como parsear arrays? en el foro de PHP en Foros del Web. Hola resulta que estoy trabajando en un pequeño motor de plantillas para un gestor de contenidos, el primer gran obstáculo que se me presenta es ...
  #1 (permalink)  
Antiguo 10/03/2010, 02:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Templates engine, como parsear arrays?

Hola resulta que estoy trabajando en un pequeño motor de plantillas para un gestor de contenidos, el primer gran obstáculo que se me presenta es como hacer para el reemplazo cuando la cadena en cuestión es un array.

Intentaré ejemplificarlo...

Supongamos que mediante una consulta a una DB obtengo la lista de módulos, luego puedo recorrer ese array y mediante un foreach imprimir los elementos en una sola cadena, pero luego al hacer el reemplazo en la plantilla me los imprimiria de corrido sin tener la posibilidad darle formato a cada elemento.

Por ej:

Código:
<div class="menu-item">[ITEMS]</div>
...me imprimiria todos los elementos dentro de la misma caja, cuando debería ser una caja por cada uno de ellos...se entiende?

Estuve viendo Smarty intentando entender como resuelve este problema pero la verdad no llego a comprenderlo.

Agradeceré de sobremanera cualquier aporte o idea al respecto.

Un saludo.
  #2 (permalink)  
Antiguo 10/03/2010, 07:39
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 15 años, 4 meses
Puntos: 13
Respuesta: Templates engine, como parsear arrays?

el replace debes hacerlo dentro de un foreach

Código PHP:
Ver original
  1. $con = consultar();
  2.  
  3. foreach ($con as $con_aux)
  4. {
  5.     $rut = $con_aux->rut;
  6.     $nombre = $con_aux->nombre;
  7.  
  8.     $PARRAFO = str_replace("(RUT)",$rut,$PARRAFO);
  9.     $PARRAFO = str_replace("(NOMBRE)",$nombre,$PARRAFO);
  10. }

asi lo hago yo, espero te funcione!
__________________
Mi Bosque de Sombras Solo Doom Metal!

por favor use esta etiqueta para publicar su código --->[HIGHLIGHT]
  #3 (permalink)  
Antiguo 10/03/2010, 08:25
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Respuesta: Templates engine, como parsear arrays?

Te agradezco, pero me parece que no llegas a ver donde está mi problema.
Esto que tu dices ya lo estoy haciendo tal cual lo expuse arriba, el inconveniente se me presenta en el maquetado, como tratar individualmente cada elemento del arreglo para poder darles diferentes estilos de ser necesario.
Claro que podría realizar todo esto en la clase misma, pero eso haria que perderia todo el sentido.

Saludos.
  #4 (permalink)  
Antiguo 10/03/2010, 08:27
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Templates engine, como parsear arrays?

ni idea de smarty pero te doy como opción que revises el aporte que hice acerca del tema
es para templates y viene todo con su debida explicación sobre su uso!.

saludos!


http://www.forosdelweb.com/f68/aport...on-php-780890/
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 10/03/2010, 15:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Respuesta: Templates engine, como parsear arrays?

Gracias amigo, le voy a hechar un vistazo.
  #6 (permalink)  
Antiguo 11/03/2010, 02:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Respuesta: Templates engine, como parsear arrays?

Bien, al final lo solucioné con un método de 4 lineas...

Código:
	public function box($content, $class) {
		$div = "<div class=\"".$class."\">".$content."</div>\n";
		return $div;
	}

El tema es que queria abstraer por completo el HTML de la clase, pero bueno, por ahora queda así.

Hidek1 te felicito por tu clase, y te quería consultar al respecto, como manejas los includes? suponte el típico escenario de un sitio dinámico donde en el template principal tienes que incluir otros segun el módulo cargado.

Gracias desde yá.
  #7 (permalink)  
Antiguo 11/03/2010, 06:20
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Templates engine, como parsear arrays?

Bueno respondiendo al tema, me demore un poco ya que solo estoy on en horario de oficina x3

aqui te dejo un ejemplo de como puedes manejar la estructura de una pagina de forma simple con la classe

index.php
Código PHP:
Ver original
  1. <?php
  2. include_once 'common.Class/class.Template.php';
  3. $template = new Template("template.index.htm");
  4. switch($_GET["url"]){
  5.     case 'home':
  6.         include_once 'home.php';
  7.         $link = new Link();
  8.         $contenido = $link->devuelve_contenido();
  9.         break;
  10.     case 'contacto':
  11.         include_once 'contacto.php';
  12.         $link = new Link();
  13.         $contenido = $link->devuelve_contenido();
  14.         break;
  15. }
  16. $template->html("content_id", $contenido); // asigno el contenido al div correspondiente
  17. echo $template->render(); // imprimo el contenido en pantalla
  18. ?>

home.php
Código PHP:
Ver original
  1. <?php
  2. class Link{
  3.     function devuelve_contenido(){
  4.         include_once 'common.Class/class.Template.php';
  5.         $template = new Template("template.home.htm");
  6.         // incluyo cosas dentro del template de home.
  7.         return $template->render();
  8.     }
  9. }
  10. ?>

de esa forma cada uno usa su propio template de forma rapida :P

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 11/03/2010, 13:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Respuesta: Templates engine, como parsear arrays?

Gracias, ya me hice una idea. (y)
  #9 (permalink)  
Antiguo 30/03/2010, 15:45
 
Fecha de Ingreso: octubre-2003
Mensajes: 540
Antigüedad: 21 años
Puntos: 1
Respuesta: Templates engine, como parsear arrays?

Perdón que vuelva con lo mismo, pero me di cuenta que la solución que había implementado (ver post #6) de poco sirve ya que sigo mezclando el código con la presentación...

A alguien se le ocurre como solventar este problema?
Quoteo el topic original para evitar confusiones ya que a lo último se desvió el tema.

Muchas gracias.

Cita:
Iniciado por Finseneu Ver Mensaje
Hola resulta que estoy trabajando en un pequeño motor de plantillas para un gestor de contenidos, el primer gran obstáculo que se me presenta es como hacer para el reemplazo cuando la cadena en cuestión es un array.

Intentaré ejemplificarlo...

Supongamos que mediante una consulta a una DB obtengo la lista de módulos, luego puedo recorrer ese array y mediante un foreach imprimir los elementos en una sola cadena, pero luego al hacer el reemplazo en la plantilla me los imprimiria de corrido sin tener la posibilidad darle formato a cada elemento.

Por ej:

Código:
<div class="menu-item">[ITEMS]</div>
...me imprimiria todos los elementos dentro de la misma caja, cuando debería ser una caja por cada uno de ellos...se entiende?

Estuve viendo Smarty intentando entender como resuelve este problema pero la verdad no llego a comprenderlo.

Agradeceré de sobremanera cualquier aporte o idea al respecto.

Un saludo.

Etiquetas: arrays, engine, parse, template
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 09:18.