Instalando o smarty

Smarty
Enviado por Pedro Faria em Sex, 24/09/2004 - 11:28.Smarty

Vou mostrar aqui como eu uso o smarty nos meus sites.

Por neurose, eu coloco as libs do smarty fora do meu DocumentRoot (vide ApacheDoc). Entao, faça o download do smarty e descompacte-o em seu /home/usuario/ e renomeie a pasta para /home/usuario/smarty.

Agora vamos criar as pastas que o smarty necessita para funcionar. Os locais, você decide... eu, neste exemplo, vou colocar dentro do DocumentRoot.

template_dir /home/usuario/www/tpl config_dir /home/usuario/www/cfg compile_dir /home/usuario/www/tmp cache_dir /home/usuario/www/tmp

Bem... ja criamos tudo o que é necessário para o funcionamento do smarty. Agora vamos configura-lo! Lembre-se de que todos os arquivos que forem citados agora, deveram estar dentro de /home/usuario/www/ .

config.php

  1. <?php
  2. // Smarty
  3. define(SMARTY_DIR, '/home/usuario/smarty/libs/');
  4. // Bibliotecas do Smarty
  5. require_once SMARTY_DIR.'Smarty.class.php';
  6.  
  7. class Smarty_Site extends Smarty {
  8.     function Smarty_Site()
  9.     {
  10.         $sBaseDir = '/home/usuario/www/';
  11.         $this->Smarty();
  12.         $this->template_dir = $sBaseDir.'templates/';
  13.         $this->compile_dir = $sBaseDir.'tmp/';
  14.         $this->config_dir = $sBaseDir.'conf/';
  15.         $this->cache_dir = $sBaseDir.'tmp/';
  16.         $this->caching = false;
  17.         $this->cache_lifetime = 0;
  18.     }
  19.  
  20.     function show()
  21.     {
  22.         preg_match('/^(.*)\.php$/', basename($_SERVER['SCRIPT_FILENAME']), $r);
  23.         $tela = $r[1];
  24.         $this->assign('tela', $tela.".tpl");
  25.         $this->display('fixo/site.tpl');
  26.     }
  27. }
  28.  
  29. $smarty = new Smarty_Site;
  30.  
  31. ?>

templates/fixo/site.tpl

  1. <html>
  2. <head>
  3.     <title>Smarty Test</title>
  4. </head>
  5.  
  6. <body>
  7.     <!-- MENU: inicio -->
  8.     <a href="index.php">Pagina Inicial</a> |
  9.     <a href="produtos.php">Produtos</a>
  10.     <!-- MENU: fim -->
  11.  
  12.     <!-- CORPO: inicio -->
  13.     {include file=$tela}
  14.     <!-- CORPO: fim -->
  15. </body>
  16. </html>

index.php

  1. <?php
  2.  
  3. require_once "config.php";
  4.  
  5. $smarty->assign('nome', 'Pedro Faria');
  6.  
  7. $smarty->show();
  8.  
  9. ?>

tpl/index.tpl

  1. Meu nome &eacute;: {$nome}
  2.  
  3. resto do conteudo do site.
  4.  

Não sei se você sacou, mas para cada arquivo.php, basta por um com o mesmo nome
e extensão .tpl no diretório tpl/ .

Viram como é simples o smarty?

Flw!



Enviado por eduardo (não verificado(a)) em Qui, 30/11/2006 - 10:09.

opa pedro...

é o seguinte, me ocorreu a seguinte dúvida...

se eu tiver vários arquivos de template (.tpl) que formam o layout...?
eu fiz um pequeno teste aqui e o meu arquivo index que chama os templates soh pega o primeiro arquivo de template que eu chamo quando eu dou o $smarty->display(' arquivo.tpl)... ou seja mais ou menos assim...

$smarty->display('index.tpl'); (que vai montar meu layout) (soh esse pega as variaveis do smarty)
$smarty->display('menu.tpl');
$smarty->display('conteudo.tpl ');
$smarty->display('cabecalho.tpl');
$smarty->display('rodape.tpl');

como eh que vou jogar os dados do meu bd no menu, conteudo, cabecalho e rodape....

valeu...

eduardo.

Enviado por Pedro Faria em Qui, 30/11/2006 - 10:39.

Primeiramente gostaria de te avisar que você pode usar nosso forum para postar suas duvidas. (vide menu)

a forma mais correta seria você chamar apenas o index.tpl... e no template vc incluir os outros templates...

ficaria mais ou menos assim...

index.php

<?php ...
$smarty->assing('menu', $menu);
$smarty->display('index.tpl');
... ?>

index.tpl

...
{include file="menu.tpl" menu=$menu}
...

e por ae vai...

Da uma lida na documentação!
http://smarty.php.net/manual/en/language.function.include.php

flw

Enviado por Hugo Ferreira (não verificado(a)) em Sex, 19/10/2007 - 11:10.

estou estudando um meio de fazer isso usando o "include_php" ao invez do "include". e dentro do "include_php" e outras páginas, eu uso smarty normalmente com duas diferenças:

1- não preciso incluir "smarty.class.php" pois já foi feito em index.php
2- o nome do objeto $smarty tem que ser diferente. tipo: $subSmarty