Trabalhando com templates Smarty
Agora vamos ver a ótica do template em si.
Lembra-se da pasta configs? Pois é ela vai conter o arquivo test.conf, que nada mais nada menos é um arquivo de inicialização.
title = Welcome to Smarty!
cutoff_size = 40
[setup]
bold = true
Ele tem o título o uma variável que vai setar algumas partes do layout e uma seção setup que terá o bold = true.
Esse arquivinho é bem bacana. Estou usando xml para configurações em meus projetos, mas talvez até use ele para algumas coisas.
O importante é que ele agrega valor, fica bem documentado, você sabe onde está as configurações.
Template da aplicação demo:
Início:
------ template ------
{* os comentários no template são feitos usando essa sintaxe *}
{* carregando o arquivo test.conf e a sessão setup que foi declarada no arquivo *}
{config_load file=test.conf section="setup"}
{* fazendo um include de um outro template no arquivo *}
{include file="header.tpl" title=foo}
------ fim template ------
obs: as marcações de template e fim template não fazem parte do arquivo, é só para separar do texto da matéria.
Eu não vou entrar em detalhes sobre os arquivos header.tpl e footer.tpl, eles são muitos simples. Agora essa funcionalidade é bem interessante, quando você for estudar o exemplo verifique esses arquivos, façam testes, porque quebra um galhão jogar os includes para o template.
Instruções:
Beleza, eu não vou demonstrar o output, porque você pode fazer o teste no seu ambiente de desenvolvimento, vai ser uma boa experiência, a intenção mesmo é deixar já tudo mastigadinho para você não ter surpresas.
Lembra-se da pasta configs? Pois é ela vai conter o arquivo test.conf, que nada mais nada menos é um arquivo de inicialização.
title = Welcome to Smarty!
cutoff_size = 40
[setup]
bold = true
Ele tem o título o uma variável que vai setar algumas partes do layout e uma seção setup que terá o bold = true.
Esse arquivinho é bem bacana. Estou usando xml para configurações em meus projetos, mas talvez até use ele para algumas coisas.
O importante é que ele agrega valor, fica bem documentado, você sabe onde está as configurações.
Template da aplicação demo:
Início:
------ template ------
{* os comentários no template são feitos usando essa sintaxe *}
{* carregando o arquivo test.conf e a sessão setup que foi declarada no arquivo *}
{config_load file=test.conf section="setup"}
{* fazendo um include de um outro template no arquivo *}
{include file="header.tpl" title=foo}
------ fim template ------
obs: as marcações de template e fim template não fazem parte do arquivo, é só para separar do texto da matéria.
Eu não vou entrar em detalhes sobre os arquivos header.tpl e footer.tpl, eles são muitos simples. Agora essa funcionalidade é bem interessante, quando você for estudar o exemplo verifique esses arquivos, façam testes, porque quebra um galhão jogar os includes para o template.
Instruções:
{* exemplo de if beleza, se o bold da sessão estiver setado como true, ele vai ficar bold, se não ele vai ignorar. *} {if #bold#}{/if} {* pegando o título que está setado no arquivo de configuração, note que tem um | captalize, essa função vai colocar todas as primeiras letras de cada palavra da string passada em maiúscula *} Title: {#title#|capitalize} {if #bold#}{/if} {*exemplo de variáveis de ambiente do smarty, note que ele pega smarty.now, e formata a data*} A data e hora atual: {$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"} {* jogando o nome da página *} Valor global atribuido à variável: $SCRIPT_NAME é {$SCRIPT_NAME} {* Outro exemplo de variáveis de ambiente, agora acessando uma variável de ambiente de servidor *} Acessando variável de ambiente servidor SERVER_NAME: {$smarty.server.SERVER_NAME} {*{ldelim} e {rdelim} vai imprimir {} por output é uma forma literal de escrever as chaves, esse comentário provavelmente vai dar pau, portanto apague de seu código se você for testá-lo *} O valor de {ldelim}$Name{rdelim} é {$Name} exemplo de variável modificadora {ldelim}$Name|upper{rdelim} {$Name|upper}{* Jogando a variável $Name que foi passada na index.php para a maiúscula *} {* Trabalhando o loop com os arrays firstname e lastname*} Um exemplo de loop: {section name=outer loop=$FirstName} {if %outer.index% is odd by 2} {%outer.rownum%} . {$FirstName[outer]} {$LastName[outer]} {else} {%outer.rownum%} * {$FirstName[outer]} {$LastName[outer]} {/if} {sectionelse} none {/section} {* trabalhando o loop com aquele array que tinha os ultimos valores representados por nomes *} An example of section looped key values: {section name=sec1 loop=$contacts} phone: {$contacts[sec1].phone}<br> fax: {$contacts[sec1].fax}<br> cell: {$contacts[sec1].cell}<br> {/section} <p> {* vai tirar os carriage returns de tudo que está dentro da tags, o output, vai ficar todo na mesma linha*} testing strip tags {strip} <table border=0> <tr> <td> <A HREF="{$SCRIPT_NAME}"> <font color="red">This is a test </font> </A> </td> </tr> </table> {/strip} This is an example of the html_select_date function: {* gerando 3 selects com mes ano e data de 1998 a 2010 *} <form> {html_select_date start_year=1998 end_year=2010} </form> This is an example of the html_select_time function: {* mesma coisa mas para horas *} <form> {html_select_time use_24_hours=false} </form> This is an example of the html_options function: {* gerando o output daquelas funções de select que estavam na página index.php *} <form> <select name=states> {html_options values=$option_values selected=$option_selected output=$option_output} </select> </form> {* include do rodapé *} {include file="footer.tpl"}
Beleza, eu não vou demonstrar o output, porque você pode fazer o teste no seu ambiente de desenvolvimento, vai ser uma boa experiência, a intenção mesmo é deixar já tudo mastigadinho para você não ter surpresas.
Não sei se está muito tarde mas a documenteção para o Smarty e em portugues está em:
http://smarty.php.net/manual/pt_BR/index.php
Você encontrará o manual completo.
Espero ter ajudado!
Falow
http://smarty.php.net/manual/pt_BR/index.php
Você encontrará o manual completo.
Espero ter ajudado!
Falow
29/09/2004 10:15am
(~20 anos atrás)
Primeiramente boa tarde a todos os incriveis participantes de fórum de php.
Me chamo Edivaldo e estou começando a aprender php juntamente com o banco mysql.
E sinceramente falando é um dos mais ricos fóruns em php que já encontrei. Parabens a todos vcs e ao idealizador da idéia.
Lendo e pesquisando aqui li algo sobre o Smarty. Fiz o download do smarty e gostaria de saber exatamente para onde eu copio os arquivos e como devo usar os seus templates para entender melhor como funciona a linguagem php. Desde já agradeço a todos a ajuda que puderem me enviar.
Muito obrigado a todos!
Edivaldo R. de Sousa
Me chamo Edivaldo e estou começando a aprender php juntamente com o banco mysql.
E sinceramente falando é um dos mais ricos fóruns em php que já encontrei. Parabens a todos vcs e ao idealizador da idéia.
Lendo e pesquisando aqui li algo sobre o Smarty. Fiz o download do smarty e gostaria de saber exatamente para onde eu copio os arquivos e como devo usar os seus templates para entender melhor como funciona a linguagem php. Desde já agradeço a todos a ajuda que puderem me enviar.
Muito obrigado a todos!
Edivaldo R. de Sousa
28/06/2004 1:03pm
(~20 anos atrás)
Bragança,
é o seguinte, quando vc instancia o smarty, você precisa setar alguns parâmetros do objeto instanciado, ex:
require_once '[path_smarty]Smarty.class.php';
$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = true;
$smarty->template_dir = ’[path_template]’;
$smarty->compile_dir = [path_compile]’;
$smarty->config_dir = [path_config]’;
$smarty->cache_dir = [path_cache]’;
leia atentamente a página 3 do artigo, tem tudo explicado direitinho, se você ainda tiver mais problemas, me avisa, estamos aí.
Atenciosamente,
Flávio Garcia
é o seguinte, quando vc instancia o smarty, você precisa setar alguns parâmetros do objeto instanciado, ex:
require_once '[path_smarty]Smarty.class.php';
$smarty = new Smarty;
$smarty->compile_check = true;
$smarty->debugging = true;
$smarty->template_dir = ’[path_template]’;
$smarty->compile_dir = [path_compile]’;
$smarty->config_dir = [path_config]’;
$smarty->cache_dir = [path_cache]’;
leia atentamente a página 3 do artigo, tem tudo explicado direitinho, se você ainda tiver mais problemas, me avisa, estamos aí.
Atenciosamente,
Flávio Garcia
24/06/2004 7:32am
(~20 anos atrás)
Cara você não está enviando algum header "Pragma no-cache" ou "Cache-Control: no-store, no-cache, must-revalidate" ou "Cache-Control: post-check=0, pre-check=0"?
Eu não tenho esse problema, talvez ou a sua aplicação joga um header que força um não cacheamento por parte do browser, ou seu web server esteja configurado para mandar esse header automático, ou o seu borwser está configurado desse jeito.
Se você me mostrar o endereço da página ou me dar mais dicas, talvez eu possa te ajudar melhor.
Eu não tenho esse problema, talvez ou a sua aplicação joga um header que força um não cacheamento por parte do browser, ou seu web server esteja configurado para mandar esse header automático, ou o seu borwser está configurado desse jeito.
Se você me mostrar o endereço da página ou me dar mais dicas, talvez eu possa te ajudar melhor.
24/06/2004 7:26am
(~20 anos atrás)
Instalei o Smarty 2.6.3 na minha máquina e descobri que, diferente da versão 2.6.2, o comando "require_once 'libs/smarty/Smarty.class.php';" desvia para o diretório "libs/smarty/". Isto me obriga a mapear todos os diretórios como no exemplo do display, no qual tenho que subir um nível:
Versão 2.6.2
require_once('libs/smarty/Smarty.class.php');
display('templates/adm/layout.tpl');
Versão 2.6.3
require_once('libs/smarty/Smarty.class.php');
display('../templates/adm/layout.tpl');
Alguém sabe se isto é um bug ? Existe alguma maneira de contornar este problema ?
Desde já agradeço
Versão 2.6.2
require_once('libs/smarty/Smarty.class.php');
display('templates/adm/layout.tpl');
Versão 2.6.3
require_once('libs/smarty/Smarty.class.php');
display('../templates/adm/layout.tpl');
Alguém sabe se isto é um bug ? Existe alguma maneira de contornar este problema ?
Desde já agradeço
23/06/2004 10:28am
(~20 anos atrás)
Estou utilizando o template Smarty (php) e sempre que tento voltar a página anterior recebo uma mensagem dizendo que a página expirou. Alguém tem alguma idéia do motivo da mensagem, e, como posso resolver isto ?
A propósito, eu utilizo o mesmo template para todas as páginas, substituindo apenas o conteúdo.
{include file="templates/adm/ghead.tpl" title=$titulo}
<table width="100%" height="80%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td width="15%" bgcolor=red>{include file="templates/adm/gmenu.tpl"}</td>
<td width="85%" bgcolor=gray>{include file=$conteudo}</td>
</tr>
</table>
{include file="templates/adm/gfoot.tpl"}
Desde já agradeço
A propósito, eu utilizo o mesmo template para todas as páginas, substituindo apenas o conteúdo.
{include file="templates/adm/ghead.tpl" title=$titulo}
<table width="100%" height="80%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td width="15%" bgcolor=red>{include file="templates/adm/gmenu.tpl"}</td>
<td width="85%" bgcolor=gray>{include file=$conteudo}</td>
</tr>
</table>
{include file="templates/adm/gfoot.tpl"}
Desde já agradeço
22/06/2004 11:47am
(~20 anos atrás)
Gostaria de avisar a todos que o manual do smarty esta traduzido. Ele pode ser encontrado tanto na página do smarty quanto na página do Grupo de Tradução do Manual do PHP, em http://manualphp.sourceforge.net, espero que isso ajude a divulgar esta ótima ferramenta de templates.
03/01/2004 2:25pm
(~21 anos atrás)
Estou usando a classe Smarty e preciso concatenar dados na template. No caso eu tenho uma variavel, e um string que devem ser concatenados(juntados).
A variavel seria esta:
{assign var="template_folder" value="minha_template/"}
Então eu preciso concatenar a variavel "$template_folder" com o string "index.tpl".
Alguém poderia me ajudar, pois tentei o classico pontinho e nada.
A variavel seria esta:
{assign var="template_folder" value="minha_template/"}
Então eu preciso concatenar a variavel "$template_folder" com o string "index.tpl".
Alguém poderia me ajudar, pois tentei o classico pontinho e nada.
21/12/2003 2:58am
(~21 anos atrás)
Pessoal ... como está o projeto da tradução para português do Manual do Smarty. Eu hoje por acaso descobri essa discussão aqui no site do PHPBrasil. Eu estava traduzindo para uso próprio o Manual do Smarty, já estou terminando o 5º capitulo da tradução. Tenho um enorme interesse em participar deste projeto
[ ]s.
[ ]s.
13/12/2003 3:47pm
(~21 anos atrás)
muito bom o seu artigo, está de parabéns, me ajudou muito!!
Forte abraço!