Dotstore
Canais iMasters

PHP

Trabalhando com Smarty - Parte 01

Fala pessoal! Essa semana começaremos a falar sobre templates (modelos).

De forma resumida, o objetivo de um template é separar a lógica de programação da lógica de exibição. Existem várias ferramentas disponíveis no mercado como: Smarty, FastTemplate, PowerTemplate, XTemplate, ecTemplate e ATemplate.

Numa página PHP normal teríamos a programação e o HTML juntos. Já utilizando templates teríamos 02 arquivos sendo um com a programação (PHP) e outro com o layout (HTML) e os elementos da ferramenta (Smarty, FastTemplate etc..) utilizada. Vamos lá:

Nessa série utilizaremos como exemplo a Smarty.

Smarty
Site: http://smarty.php.net

Instalação

01. Efetue o download da Smarty em http://smarty.php.net

02. Descompacte o arquivo no seu servidor Web.

03. No Windows, usei o Winrar pra descompactar o arquivo tar.gz

04. No meu caso, o DocumentRoot especificado no Apache é C:\pagina, então descompactei a Smarty dentro dessa pasta.
5. Renomei a pasta para smarty.

Site utilizando Templates

Quando for desenvolver um site que vá trabalhar com Smarty se faz necessária a criação de alguns diretórios.

Diretório

Descrição

templates

Armazena os templates

templates_c

Armazena os templates compilados. Deve possuir permissão de escrita.

configs

Armazena arquivos de configuração, se houverem.

cache

Armazena arquivos de cache. Deve possuir permissão de escrita.

Exemplo:

Vamos criar uma página bem simples para verificar o funcionamento. Como diretório base aqui em casa, estou utilizando o C:\pagina que está setado como DocumentRoot no Apache.

Veja como ficou a estrutura criada:

C:\pagina\modelo
C:\pagina\modelo\templates
C:\pagina\modelo\templates_c
C:\pagina\modelo\configs
C:\pagina\modelo\cache

Criando o arquivo de Layout: imasters.tpl

<html>
<head>
<title>{$titulo}</title>
</head>

<body topmargin="0" leftmargin="0" rigthmargin="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="50">{$nome}, seja bem vindo ao site {$site}</td>
</tr>
</table>
</body>
</html>

PS: Salvar dentro da pasta TEMPLATES (Ex: C:\pagina\modelo\templates\imasters.tpl).

Criando o arquivo de programação: index.php

<?
//CONSTANTE DA SMARTY / SITE
define("SMARTY_DIR","c:\\pagina\\smarty\\libs\\");
define("SITE","c:\\pagina\\modelo\\");

//DIRETÓRIO ONDE SE ENCONTRA A SMARTY
require_once(SMARTY_DIR."Smarty.class.php");

//INSTANCIA O OBJETO
$smarty = new Smarty;

//PASTA ONDE FICARÁ OS TEMPLATES
$smarty->template_dir = SITE."templates\\";

//ONDE O ENGINE VAI ESCREVER OS ARQUIVOS COMPILADOS EM CACHE
$smarty->compile_dir = SITE."\\templates_c\\";

//ARQUIVOS DE CONFIGURAÇÃO DO TEMPLATES
$smarty->config_dir = SITE."\\configs\\";

//CACHE DOS ARQUIVOS COMPILADOS
$smarty->cache_dir = SITE."\\cache\\";

//SE ESTIVER FALSE, TODA REQUISIÇÃO VAI SER COMPILADA
$smarty->compile_check = true;

//TELA DE DEBUG HABILITADA
$smarty->debugging = false;

//ATRIBUI VALORES AS VARIÁVEIS
$smarty->assign("titulo", "Trabalhando com Smarty - Parte 01");
$smarty->assign("nome", "Júlio César Martini");
$smarty->assign("site", "iMasters (www.imasters.com.br)");

//EXIBE O TEMPLATE
$smarty->display("imasters.tpl");
?>

PS: Salvar na raiz do site (Ex: C:\pagina\modelo\index.php)

Depurando

Linha 10: Definimos a CONSTANTE SMARTY_DIR que contém o caminho da classe.

Linha 11: Definimos a CONSTANTE SITE que contém o caminho da página que estará utilizando a Smarty.

Linha 17: Instanciamos a classe.

Linha 20 a 35: Definimos alguns parâmetros que serão utilizados pela classe.

Linha 38 a 40: Atribuimos valores as variáveis.

Linha 43: Exibimos o template

Executando

Outras ferramentas de Template

Diretório

Descrição

PowerTemplate

http://sourceforge.net/projects/powertemplate/

xTemplate

http://sourceforge.net/projects/xtpl/

ecTemplate

http://www.millipede.nl/ectemplate/

aTemplate

http://phpclasses.spunge.org/browse/package/98.html

Para baixar o script, clique no link abaixo.

DOWNLOAD

Clique AQUI e faça o download do script.

Semana que vem tem mais. Espero que vocês tenham gostado :-)

Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.

Boa semana a todos! Até mais.


Comente também

10 Comentários

Gunar
Gunar

Comecei a trabalhar com php à três mese, e muitas das suas materias me ajudam muito, continue sempre assim...

Thiago Muniz
Thiago Muniz

Caro Júlio Cesár já faz um tempo que uso o Smarty no windows, mas estou tendo problemas com direito de escrita por parte do usuário apache do linux no diretório escolhido para os arquivos criado pelo Smarty (templates_c), no windows que é casa de mãe joana eu consigo mas nao consigo no linux.

obg

Henrique Boaventura
Henrique Boaventura

Quem sabe fazer uma matéria nos explicando como fazer um sistema administrativo de enquetes com bd mysql???

Douglas Reigada
Douglas Reigada

Como resolver problema de caminhos de imagens com smarty pois as imagens nao ficam com o caminho em consideracao ao .tpl e sim ao arquivo .php que está instanciando a classe, ou seja, cada instancia em diretorios diferentes precisa de um caminho para encontrar as imagens no .tpl

sils
sils

Tenho um select que pega o que a pessoa digitou em uma caixa de texto, e verifica se tem no banco.
Não estou conseguindo fazer o seguinte.
Quando o cara digita alguma coisa pra procurar, e caso não ache nada no banco, ele apresentar uma mensagem que não foi encontrado nada.

Desde já agradeço a ajuda e atenção.

Atenciosamente
Silas Fellipe

erivelto carvalho
erivelto carvalho

Estou com um problema com o Smarty ou com o php não sei o problema é: ele (php ou smarty) não aceita que se coloque "\" depois do caminho do diretório. Ex. em define ("SMARTY_DIR","c:\apache\htdocs\smarty\libs\"); em não aceita a "\" no final, mas quando eu corrijo colcando a barra antes do require_once (SMARTY_DIR."\Smarty.class.php"); ele dá erro na linha 1643 do arquivo Smarty.class.php. como resolver este problema. preciso muito de ajuda.

erivelto carvalho
erivelto carvalho

o meu problema foi resolvido bastou inverter a barra disto "\" para isto "/" valeu. obrigado

Jonatas Damasceno
Jonatas Damasceno

maneiro o artigo, mas não to conseguindo exibir o resultado.. da um erro:
Warning: Smarty error: unable to read resource: "imasters.tpl" in smarty/libs/Smarty.class.php on line 1095
q houve?

Elias Ferreira
Elias Ferreira

Bem quando comecei utilizar o Smarty, tive problemas, pois comecei com linux.
Fiz tudo direitinho e nada de aparecer resultado.

O tutorial me ajudou bastante quando o Júlio César diz que o diretório templates_c tem que possuir direito de escrita.
Para mais duvidas, igual a minha e a do Thiago Muniz, entrei em linha de comando no linux.
Comecei: cd /var/www/
Logo depois: dentro do diretório cd /var/www/projeto01.smarty/
Logo depois, dentro do diretório de tabalho: sudo chmod 777 templates_c
Pronto deu beleza.
Mas vale a pena ver direitinho o caso de permissões, não é legal ficar dando 777 em todo arquivo ou pasta.
Beleza, galera.

Elias Ferreira
Elias Ferreira

diretório de trabalho.

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.
KingHost

Parceiros

IBM
Abril
Hostmídia
PagSeguro
Impacta
Internet Innovation
Grupo Buscapé
Dialhost
O Ligador
RedeHost
Campus Party
Apiki
Tecla
Verisign
KingHost
DotStore
Café Azul - Social, Mobile e Smart TV
WebMatrixWebMatrix