Trabalhando com templates Smarty
O Smarty é um objeto mais sofisticado do que os outros que eu encontrei na web. Ele tem uma estrutura de diretórios um pouco mais complicada, então deixa eu explicar tudo direitinho.
Obs: estarei mexendo com a versão 2.6.0 RC2, um release candidate, não é a versão estável mas se aplica para as outras e fica mais atual.
Vamos analizar a estrutura de diretórios do Smarty:
Logo depois que você descompactar o arquivo Smarty-2.6.0-RC2.tar.gz você terá os segintes arquivos dentro do seu diretório:
-- arquivos de informação --
.cvsignore BUGS ChangeLog COPYING.lib FAQ INSTALL
NEWS README RELEASE_NOTES TODO
-- engine do smarty --
demo [dir] <-- um exemplo de aplicação, é desse, ou mais ou menos desse jeito que você vai se organizar em seu projetos em relação a pastas
-- engine do smarty --
libs [dir] <-- dentro dessa pasta vai estar os arquivos da engine smarty, essa pasta vai ficar no seu include_path ou onde você quiser
-- misc --
misc [dir] <-- essa pasta tem um gif e um texto falando que você pode usá-lo em suas páginas
Para finalizar a análize, vamos ver como realmente fica a estrutura da aplicação:
- pasta libs, que estará ou no include_path ou em qualquer outro lugar onde você queira colocar, podendo até renomear ou colocar largado junto com seus objetos. O importante é que você terá que incluir essa página para instanciar o objeto;
- página convencional(.php) que instanciará o objeto Smarty, e carregará o seu respectivo template;
- pasta configs, que vai conter os arquivos de configuração do seu template, não se preocupe se você não entendeu essa parte, vou explicar em código;
- pasta templates, que conterá seus templates realmente;
- finalmente, a pasta templates_c, que será onde o engine vai escrever os arquivos compilados para cache, não se preocupe o Smarty faz isso automático.
obs: essa estrutura é sugestão, invente sua estrutura se quiser, estou seguindo por base o demo do Smarty.
Agora que nivelamos o papo, vamos para o código, nele conseguiremos entender essa ladainha toda que a gente falou até agora.
Obs: estarei mexendo com a versão 2.6.0 RC2, um release candidate, não é a versão estável mas se aplica para as outras e fica mais atual.
Vamos analizar a estrutura de diretórios do Smarty:
Logo depois que você descompactar o arquivo Smarty-2.6.0-RC2.tar.gz você terá os segintes arquivos dentro do seu diretório:
-- arquivos de informação --
.cvsignore BUGS ChangeLog COPYING.lib FAQ INSTALL
NEWS README RELEASE_NOTES TODO
-- engine do smarty --
demo [dir] <-- um exemplo de aplicação, é desse, ou mais ou menos desse jeito que você vai se organizar em seu projetos em relação a pastas
-- engine do smarty --
libs [dir] <-- dentro dessa pasta vai estar os arquivos da engine smarty, essa pasta vai ficar no seu include_path ou onde você quiser
-- misc --
misc [dir] <-- essa pasta tem um gif e um texto falando que você pode usá-lo em suas páginas
Para finalizar a análize, vamos ver como realmente fica a estrutura da aplicação:
- pasta libs, que estará ou no include_path ou em qualquer outro lugar onde você queira colocar, podendo até renomear ou colocar largado junto com seus objetos. O importante é que você terá que incluir essa página para instanciar o objeto;
- página convencional(.php) que instanciará o objeto Smarty, e carregará o seu respectivo template;
- pasta configs, que vai conter os arquivos de configuração do seu template, não se preocupe se você não entendeu essa parte, vou explicar em código;
- pasta templates, que conterá seus templates realmente;
- finalmente, a pasta templates_c, que será onde o engine vai escrever os arquivos compilados para cache, não se preocupe o Smarty faz isso automático.
obs: essa estrutura é sugestão, invente sua estrutura se quiser, estou seguindo por base o demo do Smarty.
Agora que nivelamos o papo, vamos para o código, nele conseguiremos entender essa ladainha toda que a gente falou até agora.
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!