+3

Trabalhando com templates Smarty

criado por Flávio Gonçalves Garcia em 25/10/2003 10:12pm
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.

Comentários:

Mostrando 1 - 10 de 31 comentários
Caraaaaaaaaaa
muito bom o seu artigo, está de parabéns, me ajudou muito!!
Forte abraço!
18/05/2007 1:37pm (~17 anos atrás)

Edinho disse:
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
29/09/2004 10:15am (~19 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
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


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.
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
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
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 (~20 anos atrás)

Éder Baum disse:
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.
21/12/2003 2:58am (~20 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.
13/12/2003 3:47pm (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)