Trabalhando com templates Smarty
Tomando por base o demo que vem com o smarty,o arquivo index.php ...
Instanciando:
Vamos parar um pouco para fazer umas considerações, na documentação disponível do site do template tem alguns métodos para você ter mais flexibilidade para trabalhar as pastas dos templates, mas eu vou citar algumas aqui:
Operações:
Imprimido o template:
Instanciando:
<?php // preste atenção essa linha mudará de acordo com o lugar que você vai colocar a pasta // libs eu pessoalmente mudei o nome dela para smarty, e coloquei na minha pasta class, // onde eu tenho minha coleção de classes require '../libs/Smarty.class.php'; // Instanciando $smarty = new Smarty; // Quando compile_check está true, ele verifica se não vai ser alterado nada no template, // se for ele compila de novo e manda o template, se não ele já manda o cache para o // usuário. Se estiver false toda requisição vai ser compilada $smarty->compile_check = true; // Tela de debug habilitada, pula um popup com o debug $smarty->debugging = true; ?>
Vamos parar um pouco para fazer umas considerações, na documentação disponível do site do template tem alguns métodos para você ter mais flexibilidade para trabalhar as pastas dos templates, mas eu vou citar algumas aqui:
<?php // Defina a canstante SMARTY_DIR define(’SMARTY_DIR’,’/usr/local/lib/php/Smarty/’); require(SMARTY_DIR.’Smarty.class.php’); $smarty = new Smarty; // Passe para o Smarty onde estará suas pastas $smarty->template_dir = ’/var/www/demo/templates/’; $smarty->compile_dir = ’/var/www/demo/templates_c/’; $smarty->config_dir = ’/var/www/demo/configs/’; $smarty->cache_dir = ’/var/www/demo/cache/’; //continue com o resto da programamção ?>
Operações:
<?php // Mandando variáveis comuns para o template $smarty->assign("Name","Fred Irving Johnathan Bradley Peppergill"); // Mandando um arrays para efetuar loops $smarty->assign("FirstName",array("John","Mary","James","Henry")); $smarty->assign("LastName",array("Doe","Smith","Johnson","Case")); // Mandando arrays de arrays para o loop $smarty->assign("Class",array(array("A","B","C","D"), array("E", "F", "G", "H"), array("I", "J", "K", "L"), array("M", "N", "O", "P"))); // Esse array está com o último nível reperesentado por nomes $smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"), array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); // Essa funcionalidade que tem no assing é show porque ela vai criar um option sem muita // programação no seu template, vejamos o exemplo: // Jogou os valores $smarty->assign("option_values", array("NY","NE","KS","IA","OK","TX")); // Jogou os outputs $smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas")); // Escolheu o que ficará selecionado $smarty->assign("option_selected", "NE"); ?>
Imprimido o template:
<?php // O raciocínio aqui é diferente, o nome do template vai ficar na impressão e não no // começo do processamento. No caso index.tpl é o template. $smarty->display('index.tpl'); ?>
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!