[SP-pm] Template Toolkit - Estudando

André Garcia Carneiro andre.garcia.carneir at terra.com.br
Wed Nov 12 08:26:30 PST 2008


---------- Cabeçalho original -----------

De: saopaulo-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
Para: saopaulo-pm em mail.pm.org
Cópia: 
Data: Wed, 12 Nov 2008 13:37:30 -0200
Assunto: [SP-pm] Template Toolkit - Estudando

> Estou estudando Template Toolkit, e não estou entendendo algumas coisas do
> manual.
> 
> O manual diz mais ou menos assim:
> *Um número de diretrizes orientadoras especiais são fornecidas, como o "
> INSERT" , " INCLUDE" e " PROCESS" , de que permita que o índice seja
> acumulado componentes menores do molde. Isto permite uma aproximação modular
> a construindo um Web site ou o outro repositório satisfeito, promovendo o
> reusability, consistência do cruz-local, facilidade da construção e
> subseqüente manutenção. Elementos comuns tais como encabeçamentos, pés de
> página, barras de menu, as tabelas, e assim por diante, podem ser criadas
> como as limas de molde separadas que podem seja processado então em outros
> originais como necessário. Todos definiram as variáveis são herdadas por
> estes moldes junto com adicional " local" os valores especifico.
> 
> [% PROCESS header
> title = "The Cat Sat on the Mat"
> %]
> 
> [% PROCESS menu %]
> 
> A posição do felino faltante tem sido estabelecida agora. Obrigado para seu
> auxílio.
> 
> [% INSERT legal/disclaimer %]
> 
> [% PROCESS footer %]
> 
> Você pode igualmente definir um molde como um BLOCO dentro da mesma lima e
> PROCESSE-A apenas como toda a outra lima de molde. Isto pode ser inestimável
> para acumular elementos repetitivos tais como tabelas, menus, etc.
> 
> [% BLOCK tabrow %]
> <tr><td>[% name %]</td><td>[% email %]</td></tr>
> [% END %]
> 
> <table>
> [% PROCESS tabrow name="tom"   email="tom em here.org"    %]
> [% PROCESS tabrow name="dick"  email="disk em there.org"  %]
> [% PROCESS tabrow name="larry" email="larry em where.org" %]
> </table>*
> 
> Eu não entendi essa parte das tabelas, isso vai resultar em que ?
> *[% PROCESS tabrow name="tom"   email="tom em here.org"    %]

Você definiu no bloco 'tabrow' o modelo das linhas da sua tabela

 [% BLOCK tabrow %]
 <tr><td>[% name %]</td><td>[% email %]</td></tr>
 [% END %]

Repare que aqui foram definidas duas variáveis: 'name' e 'email'.

Agora essa linha abaixo pede para você processar os blocos passando as variáveis que você definiu no bloco
'tabrow':

 [% PROCESS tabrow name="tom"   email="tom em here.org"    %]

Traduzindo para linguagem de humanos(mais ou menos)... 

Processe o bloco 'tabrow', onde os parâmetros são name='tom' e email = "tom em here.org". 

Isso parecido como se você passasse o seu 'stash'(baldão de variáveis) para o objeto Template processar através
método 'process', por exemplo, suponhamos essa situação no template:

[% FOREACH user IN users %]
<tr><td>[% user.name %]</td><td>[% user.email %]</td></tr>
[%END%]

Pra mandar isso através do seu código, você faria algo do tipo:
<pseudocode>
use strict;
use Template;
#Criando a estrutura de dados do meu stash. Meu stash = $users
my $users = [{ name => 'tom', email => 'tom em here.org'}
                        ,{name => 'dick', email => 'dick em there.org'}
];# e assim por diante...
my $tt = Template->new('seus parametros aqui');
$tt->process('meutemplate.tt',$users);

</pseudocode>

Espero ter ajudado você a entender o que se passa...



> 
> *Para ser mais claro o que eu sei fazer de Template Toolkit é criar um
> arquivo chamado .tt, index.tt outro chamado header e outro chamado footer.
> Dentro do index.tt eu ponho o conteudo do site, exemplo:
> *[% INCLUDE header %]
> <p>Esse site é bonito</p>
> [% INCLUDE footer %]*
> 
> Dentro do header eu coloco todo cabeçalho do site, exemplo:
> *<html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
> <title>Residencial Lar dos Sonhos de Alice</title>
> <link rel="stylesheet" type="text/css" href="estilo.css" />
> </head>
> <body>*
> 
> Dentro do footer eu coloco tudo depois do corpo do site, geralmente os
> copyrights, exemplo:
> *</body>
> <a href=frame02.html>Voltar</a>
> <p>Power by Nasa</p>
> </html>*
> 
> Ae forma Cabeça( header ), conteúdo do site ( index.tt ) e o resto do site
> (footer).
> 
> Obrigado []'s
> --
> print
> "\x54\x68\x65\x20\x53\x69\x6c\x65\x6e\x74\x20\x47\x75\x61\x72\x64\x69\x61\x6e",$/
> 

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org



More information about the SaoPaulo-pm mailing list