Comunidad de diseño web y desarrollo en internet online

uso de plantillas y php

Citar            
MensajeEscrito el 05 Ene 2008 02:23 am
Hola buenas, estoy haciendo pruebas con el código de:

http://www.cristalab.com/tutoriales/132/creacion-y-uso-de-plantillas-o-templates-en-php

pero tengo una duda, si quiero en vez de pasar algo como esto:

Código :

   include("clase_plantilla.php");
   include("inc/menu.php");
   include("inc/contenido.php");
   include("inc/cabecera.php");

   $Contenido=new plantilla("index");//al Pasar como parametro Prueba, asumimos que en la carpeta    plantillas existe un archivo de nombre Prueba.tpl
   $Contenido->asigna_variables(array(
               "titulo" => "prueba",
               "cabecera" => $menusup,
               "contenido" => $contenido,
               "menu" => $menu,
               "inferior" => ""
               ));
   $ContenidoString = $Contenido->muestra();//$ContenidoString contiene nuestra plantilla, ya con las variables asignadas, fácil no?
   echo $ContenidoString;


en vez de pasar un nombre directamente o una variable, se puede pasar directamente el contenido de una página php o html? por ejemplo poner "contenido" =>include("inc/contenido.php")
eso se podría hacer de alguna forma?

Un saludo

Por haven66

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Ene 2008 04:18 pm
Esto es para hacer una plantilla dinamica.
Osea tienes una archivo pagina.pl. Tu con esto puedes hacer infinitas paginas en base a "pagina.pl" al modificar el contenido.-

Al hacer:

Código :

$contenido = include("inc/contenido.pl")



Lo que haces es cargar el codigo que siempre seria el mismo.- Esto sirve para trabajar con codigo limpio.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 05 Ene 2008 08:49 pm
Haber si me entero jeje, que me cuesta un poco esto, yo lo que necesito es lo siguiente, llevo unos dias probando y no consigo que me salga, por ejemplo tengo una plantilla,index.tpl con esta estructura.

Código :

<div id="cabecera">{cabecera}</div>
    <div id="menu">{menu}</div>
   <div id="central">{datos}</div>
<div id="pie">{inferior}</div>


con sus correspondientes css y js, la cabecera pues vale será una imagen o un flash, el menú pues eso un menú que quede marcado segun donde estés asi que será un php con el menú, inferior pues no se igual solo un color, y datos ahi va un php con formularios con datos sacados de la base de datos o cualquier otra cosa, entonces mi pregunta es como podría poner cada cosa en su sitio??

Código :

$Contenido->asigna_variables(array(
               "titulo" => "prueba",
               "cabecera" => $cabecera,
               "datos" => "aqui que le pondría el php, el include o el template",
               "menu" => "aqui lo mismo",
               "inferior" => ""
               ));


o no debería ponerlo en un array?, ando algo perdido la verdad, si pongo contenido en variables o bien texto puro, no hay problema pero si e quiero complicar un poco mas y poner un la zona de datos un codigo php o un include o un nuevo template no tengo ni idea como se hace, algna sugerencia?

Un saludo

Por haven66

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2008 11:37 am
Uf yo también me pierdo ahí.

Si por ejemplo, tengo el archivo 'index.php' con su respectivo 'plantillas/index.tpl' y quiero hacer un "include" de otro archivo con su plantilla como puede ser 'menu.php' que tiene un 'plantillas/menu.tpl'. Se me muestra el contenido arriba del todo (antes del <html>...) y en el lugar donde debería aparecer aparece un 1.
Otra duda que tengo, es para introducir por ejemplo en el mismo 'index.php' las noticias de una web. Tengo creado el código php que me saca las noticias de la db y su plantilla, pero no consigo incorporarlo al 'index.php'.

¿Alguna ayudita? Seguiré trasteando a ver si saco algo, porque la verdad es que es muy cómodo separar la programación del diseño.

Saludos

Por Izzy_Hell

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2008 12:22 pm

Izzy_Hell escribió:

Uf yo también me pierdo ahí.

Si por ejemplo, tengo el archivo 'index.php' con su respectivo 'plantillas/index.tpl' y quiero hacer un "include" de otro archivo con su plantilla como puede ser 'menu.php' que tiene un 'plantillas/menu.tpl'. Se me muestra el contenido arriba del todo (antes del <html>...) y en el lugar donde debería aparecer aparece un 1.


Aqui creo que habras utilizado un echo para sacar la información, prueba a ponerle return en vez de echo, yo tenía el mismo problema.


Un saludo

Por haven66

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2008 02:18 pm

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 19 Feb 2008 10:09 pm

Por Izzy_Hell

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Feb 2008 10:34 pm
Vale, no se como hacerlo jaja

Expongo un poquillo el problema (que creo que es el mismo que el de haven66)

Mi web se compone de "Cabecera", "Menu", "Cuerpo", y "Footer".
La cabecera, el menu y el footer son estáticos, pero el contenido de "Cuerpo" no lo es. En mi caso tengo definida una función para que me incluya en "Cuerpo" el archivo pasado por url.
Por ejemplo, si la url es ".../index.php?id=galeria" en "Cuerpo" se me carga la galería.

El problema viene a la hora de hacer el "include" en el sistema de plantillas, que no se como se debe hacer. Por cierto, el archivo que queremos incluir también está formado por el archivo .php y su/sus correspondientes .tpl

A ver si alguien nos echa un cable :)

Por Izzy_Hell

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Feb 2008 03:42 am
Lo que se busca con un sistema de plantillas es que no escribas html y php junto. Un ejemplo para lo tuyo

Estructura de archivos del ejemplo

libreria/Template.php
plantillas/body.tpl
plantillas/cabecera.tpl
plantillas/pie.tpl
index.php


Contenido de archivos...

cabecera.tpl

Código :

      <div id="menu">
         <ul>
            <li>Art&iacute;los</li>
            <li>Foros</li>
            <li>Tutoriales</li>
            <li>Ejemplos</li>
            
         </ul>
      </div>



body.tpl

Código :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>{tituloPagina}</title>
   </head>
   <body>
      {cabecera}
      </div>
      <div id="contenido">
         {contenido}
      </div>
      {pie}
   </body>
</html>


pie.tpl

Código :

      <div id="pie">
         <ul>
            <li>Art&iacute;culos</li>
            <li>Foros</li>
            <li>Tutoriales</li>
            <li>Ejemplos</li>
         </ul>
         <p>Derechos Reservados blablabla</p>
      </div>


index.php

Código :

<?php
include_once(dirname(__FILE__) . "/libreria/Template.php");

$olTemplate = new Template();
$olTemplate->PATH = "plantillas/";

$mlVarsTPLEmpty = array();
$olTemplate->setTemplate("cabecera");
$olTemplate->setVars($mlVarsTPLEmpty);

// :::: Almacenamos la cabecera ::::
$slCabecera = $olTemplate->show();

$olTemplate->setTemplate("pie");
$olTemplate->setVars($mlVarsTPLEmpty);
// :::: Almacenamos el pie ::::
$slPie = $olTemplate->show();


// Empezamos con la plantilla final

$mlVarsTPL["tituloPagina"] = "Ejemplo de Plantilla";
$mlVarsTPL["contenido"] = "Este es el contenido";
// :::: Asignamos la cabecera ::::
$mlVarsTPL["cabecera"] = $slCabecera; 
// :::: Asignamos el pie ::::
$mlVarsTPL["pie"] = $slPie; 

$olTemplate->setTemplate("body");
$olTemplate->setVars($mlVarsTPL);

echo $olTemplate->show();
?>



Para esa version de Template existia un bug, que el objeto no formatea la plantilla si no se hace un setVars. Para eso hacemos un setVars con un array vacio preveniendo el error en caso de que cabecera.tpl y pie.tpl tuvieran variables.

Template ha evolucionado mucho, Dano y yo hemos mejorado el rendimiento y agregado más funcionalidades. Pero ninguno ha tenido tiempo de publicar una documentación sobre ella, apesar de que tiene meses la última versión. Ofrecemos disculpa por eso.


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 26 Nov 2010 02:26 pm
Como estan chicos, estoy con el mismo problema, y quisiera hacer una consulta, la libreria Templates.php no es la misma que usas al principio no? de donde se la puede bajar?

Gracias
Walter

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8

 

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