Comunidad de diseño web y desarrollo en internet online

(Clase Template) Remplazar {CONTENIDO} por simple HTML

Citar            
MensajeEscrito el 06 May 2006 02:14 pm
Bueno mi duda es sobre remplazar un identificador con código html.
Pongo este simple ejemplo para hacerme entender.

archivo test.php

Código :

<?php
   include("Template.php");
   $myTemplate= new Template();
   $myTemplate->PATH ="plantillas/";
   $myTemplate->setTemplate("base");
   $CONTENIDO="Soy contenido";/* Como puedo definir esta variable para que muestre contenido html?*/
   $myTemplate->setVars(array("CONTENIDO"=>$CONTENIDO));
   echo $myTemplate->show();   
?>


plantillas/base.tpl

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1" />
<title>Prueba contenido</title>
</head>

<body>
<div id="cont">
   <div id="header">
   <p>Soy el header</p>
   </div>
   <div id="contenido">
   {CONTENIDO} <!-- Este identificador por html -->
   </div>
   <div id="footer">
   <p>Soy el footer</p>
   </div>
</div>
</body>
</html>


El identificador {CONTENIDO} remplazarlo por contenido html simple. Al intentar colocar sobre la variable $CONTENIDO código html, me bota errores, de que forma se puede implementar? Muchas gracias por la ayuda.
^^

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 06 May 2006 02:51 pm
Hola, mira ese codigo esta bien, si te da error creo que es por la estructura los archivos, segun ese código, la organizacion de los archivos deberia ser asi:

/test.php
/Template.php
/plantillas/base.tpl

Si no es eso detalla mas

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 06 May 2006 03:02 pm
Bueno te doy un ejemplo llenando la variable con codigo html, primero que todo debes saber que la idea de la clase Template es no escribir codigo html dentro del php, asi que por eso utilizaremos otra plantilla, ejemplo:

/plantillas/articulo.tpl

Código :

<div id="articulo">
<h3>{titulo}</h3>
<p class="contenido">{contenido}</p>
<p class="autor">{autor}</p>
</div>


test.php

Código :

<?php
   include("Template.php");
   $myTemplate= new Template();
   $myTemplate->PATH ="plantillas/";

   $myTemplate->setTemplate("articulo");
   $CONTENIDO="";
   for ($i=0;$i<3;$i++){
         $myTemplate->setVars(array(
                        "titulo"=>"titulo $i",
                        "contenido"=>"contenido $i",
                        "autor" => "autor $i"
                        )
                     ); 
      $CONTENIDO.= $myTemplate->show();        
   }
   
   $myTemplate->setTemplate("base");
   $myTemplate->setVars(array("CONTENIDO"=>$CONTENIDO));
   echo $myTemplate->show();   

?>


La estructura de los archivos quedo asi:
/test.php
/Template.php
/plantillas/articulo.tpl
/plantillas/base.tpl

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 06 May 2006 03:08 pm
Gracias por responder Maikel. Si la estructura de los archivos está bien, lo que pasa es que el ejemplo que puse funciona. Lo que queria decir es lo siguiente:

Al remplazar de la siguiente forma: $CONTENIDO="<img src="ima.jpg">"; en el archivo test.php Sale un error. Parse error: parse error, unexpected T_STRING in ...
Al remplazar el contenido de la variable $CONTENIDO con html sale un error. De que forma puedo ubicar dentro del identificador {CONTENIDO} que está ubicado en base.tpl, código html simple. ^^ .

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 06 May 2006 03:11 pm
Haaa okey, lo siento posteamos casi al tiempo, voy a implementar tu ejemplo para entender. gracias!!

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 06 May 2006 03:12 pm
El error es de codificacion, no te lo da la plantilla. Seria asi:
$CONTENIDO="<img src=\"ima.jpg\">";

Por cierto, te conteste 2 veces, mira arriba de tu post ;)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 06 May 2006 03:32 pm
Si, si funciona. no entiendo todo de la clase (entiendo mas bien poco). Tengo que estudiarla muchisimo mejor. Gracias Maikel. :D

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 06 May 2006 04:48 pm
jeje ok, cualquier cosa estamos aqui :P

No tienes que entender la clase, solo aprender a usarla, ni yo la entiendo :lol: , eso fue Dano que la codifico en una sobredosis de :cc:

A ver un resumen de la clase:
propiedad PATH= ruta donde esta ubicada la plantilla que vayamos a parsear, ojo esta ruta es relativa al archivo php que esta usando el objeto plantilla (en tu caso test.php), no de la clase Template.php, te lo digo porque al menos yo, siempre pongo la Template.php en una carpeta llamada includes.
Ejemplo:
/test.php
/includes/Template.php
/templates/articulo.tpl
/templates/base.tpl

y en test.php hago esto:

Código :

<?php
       include("includes/Template.php");
       $tpl = new Template();
       $tpl->PATH = "templates/";
       $tpl->setTemplate("articulo");
       //No hago $tpl->setVars, suponiendo que no tengo ninguna {variable} en la plantilla articulo.tpl
       echo $tpl->show();
?>


metodo setTemplate: le pasamos por parametro el nombre de la plantilla (sin el tpl) que queramos usar ejemplo:

Código :

<?php
       include("includes/Template.php");
       $tpl = new Template();
       $tpl->PATH = "templates/";
       $tpl->setTemplate("articulo"); //Aqui debemos suponer articulo.tpl existe en la carpeta templates/
       //No hago $tpl->setVars, suponiendo que no tengo ninguna {variable} en la plantilla articulo.tpl
       echo $tpl->show();
?>

metodo setVars: pasamos una arreglo con cada uno de los valores de nuestras variables en la ultima plantilla que seteamos con setTemplate, si alguna variable de la plantilla no es pasada en el arreglo simplemente es borrada [no es un bug, es muy funcional esto]

Ejemplo
articulo.tpl

Código :

<div id="articulo">
<h3>{titulo}</h3>
<p class="contenido">{contenido}</p>
<p class="autor">{autor}</p>
</div>


test.php

Código :

<?php
   include("includes/Template.php");
   $myTemplate= new Template();
   $myTemplate->PATH ="templates/";
   $myTemplate->setTemplate("articulo");

   $CONTENIDO="";
   for ($i=0;$i<10;$i++){
         if ($i%2){
         $myTemplate->setVars(array(
                        "titulo"=>"titulo $i",
                        "contenido"=>"contenido $i",
                        "autor" => "autor $i"
                        )
                     ); 
         } else{
         $myTemplate->setVars(array(
                        "titulo"=>"titulo $i",
                        "contenido"=>"contenido $i",
                        )
                     ); 
         }
      $CONTENIDO.= $myTemplate->show();        
   }
   $myTemplate->setTemplate("base");
   $myTemplate->setVars(array("CONTENIDO"=>$CONTENIDO));
   echo $myTemplate->show();
?>


metodo show: devolvera el contenido de la plantilla parseada o no, eso dependerá de si se hizo setVars antes de su invocacion o no.

Eso es todo lo que necesitas saber de la clase Template ^^

Quizás luego se libere otra clase :P


saludos

PD: eyy espera eso significa que mi tutorial es malo :roll:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 06 May 2006 05:31 pm
Para nada, el tuto es de lo mejor XD XD XD (y)
Ya todo es mas claro para mi. Sospechaba que la estaba usando mal. Gracias Mikel!! ;)

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.