Google
Web dns.bdat.net

[PHP-ES] Re: Pregunta sobre Smarty

Write haof XML files: Matias Surdi ( matiassurdi@gmail.com)
Fecha: sáb 14 may 2005 - 02:36:43 CEST


Matias Salimbene escribió:
> gracias a todos por responder, me han ayudado bastante.
>
> Saludos
>
> "Matias Salimbene" < mad22@fibertel.com.ar> wrote in message
> news:20050510193937.26195.qmail@lists.php.net...
> Hola muchachos, estoy desarrollando un sitio con smarty y me encuentro en la
> siguiente situacion.
>
> Tengo los siguiente templates:
>
> - home.tpl
> - header.tpl
> - footer.tpl
> - menu.tpl
>
> Los templates "header","footer" y "menu" estan incluidos en "home". Es
> decir, que la instruccion display se la aplico a "home" solamente, como los
> otros templates esta incluidos, me aparecen todos. Hasta ahi bien, ahora,
> como puedo hacer para pasar atributos a estos "sub-templates" que tengo.
> Porque los assign que hago funcionan solo para el template para el cual
> despues ejecuto un display.
>
> Ej:
> Home.tpl:
> <html>
> <head>{$idioma}</head>
> <body>
> {include file="header.tpl"}
> {include file="menu.tpl"}
> {include file="footer.tpl"}
> </body>
> <html>
>
> Header.tpl
> <a href='{$link}'>{$nombre}</a>
>
> Menu.tpl
> <a href='{$link1}'>{$nombre1}</a>
>
> Footer.tpl
> <a href='{$link2}'>{$nombre2}</a>
>
> Home.php:
> <?PHP
> if ($lang=="es"){
> $smarty->assign("idioma","español");
> $smarty->display("home.tpl");
> }
> elseif($lang=="en"){
> $smarty->assign("idioma","ingles");
> $smarty->display("home.tpl");
> }
> ?>
>
> Este ejemplo puede ayudar a entender como es el tema. Una cosa que intente
> era agregar atributos a los "include" del "home.tpl" e igualarlos a una
> variable para luego asignarle un valor con assign, pero no me funcionó.
>
> Algo como {include file="menu.tpl" lang=$lenguaje}, lo cual funciona si en
> lugar de poner una variable, pongo un valor estático, pero eso no me sirve.
>
> Espero me hayan podido entender, gracias y saludos!
>
> Matias.-

Deberias ver el método Smarty->fetch() si no es que ya lo has utilizado.

La idea báscia, es colocar en el template principal, en lugar de
includes, variables, como por ejemplo {$header} y {$footer}.

luego, en el template header.tpl te pones {$title} , por ejemplo o lo
que quieras modificar.

finalmente en el codigo php, primero, asignarias al objeto smarty los
valores para las variables del header.tpl y en vez de utilizar el metodo
display(), utilizas el metodo fetch() guardando los resultados en una
variable de PHP, luego esta variable q tienes en php, la asignas al
template principal.
Repites este proceso igualmente con el footer.tpl y cualquier otro
template "complementario".
Y al final, con display() lo presentas todo en la pantalla.

a mi me funciona muy bien este metodo, pero en mi caso he optado por
hacer una especie de "framework" para facilitarme las cosas un poco mas
en el futuro.

Saludos, y espero q te sirva.

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Este archivo fue generado por hypermail 2.1.7 : sáb 18 mar 2006 - 18:24:01 CET