Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 1)

Esse artigo tem como finalidade explicar a utilização da Classe FastTemplate para a utilização de templates dinâmicos em PHP. O chamado template dinâmico é aquele que só utiliza 2 arquivos: um PHP e outro o template propriamente dito. Desse modo ficará mais fácil a implementação de projetos onde o programador e o designer trabalharão de forma quase que totalmente separada.

[ Hits: 16.175 ]

Por: Olavo Alexandrino em 28/06/2003 | Blog: http://oalexandrino.com


Mãos à obra



Passo 1 - Download


Bem o primeiro passo é fazer o download em:

Passo 2 - include_path


Depois que você descompactar os arquivos baixados, configure um diretório de includes no seu servidor a partir do arquivo de configuração do PHP (php.ini), para que qualquer que seja o local que você esteja não precise colocar o caminho completo da classe.

Passo 3 - Utilização


Vamos criar o arquivo: cria_template.php como exemplo. Coloque uma include para a classe para que TODOS os métodos da classe estejam disponíveis no arquivo cria_template.php:

<?php # include para o Classe FastTemplate
include ("class.FastTemplate.php3");
?>

Passo 4 - Instanciação


No mesmo arquivo (cria_template.php), crie uma instância para um novo objeto.

<?php
# cria uma nova Instância de objeto para a Classe
$template = new FastTemplate('.');
?>

O parâmetro => '.' deve ser o caminho onde estará os templates. Nesse caso, na mesma pasta do arquivo "cria_template.php". Se, por acaso fosse no diretório modelos deveria obedecer a sintaxe:

<?php
$template = new FastTemplate('modelos');
?>

Passo 5 - Objeto


Criar o objeto de template referenciando o arquivo de template:

<?php
$template->define(array("pagina"=>"pagina.tpl"));
?>

No caso acima o nome "pagina" será a referência do objeto para o arquivo de template "pagina.tpl". A extensão poderia ser HTML, mas é aconselhável manter o "*.tpl" para sabermos que é um template.

Passo 6 - Template dinâmico


Devemos agora criar outro template: O dinâmico. Aquele que considera um bloco dinâmico para que seja usado apenas uma arquivo de template.

<?php
$template->define_dynamic("linhas","pagina");
# associa o modelo dinâmico "linhas" para o template página
# o nome "linhas" referes-e a um bloco dinâmico do mesmo nome na
# página do template definida em "pagina.tpl"
?>

Passo 7 - Exibição dos dados


Construir um loop de exibição de dados do bloco dinâmico na página de Template. No caso usei o MySQL, mas pode-se usar qualquer banco de dados ou até mesmo, por exemplo, um loop para construção de um depo down de mês/dia/ano.

<?php
$dados=mysql_query("SELECT nome,fone from tabela ORDER BY nome");
while (list($nome,$fone)=mysql_fetch_row($dados)) {
    $template->assign(array("{NOME}" => $nome, {FONE}" => $fone ));
    $template->parse('LINHAS','.linhas');
}
?>

No caso acima o template dinâmico tem apenas duas CONSTANTES, que são campos retornados de uma pesquisa SQL feita no MySQL e armazenada na variável $dados.

Deverá ser feita uma atribuição aos valores das contantes: {NOME} e {FONE}. A classe percorrerá o arquivo "pagina.tpl" e onde encontrar essas constantes a substituirá pelo conteúdo retornado pela consulta SQL.

Depois é feita uma "concatenação" dos resultados da pesquisa no bloco dinâmico "linhas" definido no passo 6. O 1° argumento ,'LINHAS', pode ser qualquer nome, mas é preferível colocar nomes sugestivos.

Passo 8 - Atribuição de resultados


Agora deverá ser feita a atribuição do resultado do bloco no primeiro template que é a página completa do Template:

<?php
$template->parse("SAIDA",'pagina');
$template->FastPrint("SAIDA");
?>

O 1° argumento ,'SAIDA', pode ser qualquer nome, mas é preferível colocar nomes sugestivos.

Passo 9 - o arquivo pagina.tpl


Esse arquivo não deverá conter nenhuma TAG PHP, deverá conter apenas HTML puro e logicamente as constantes definidas na página "cria_template.php". No caso apresentado será exibido os dados numa tabela de forma que a parte dinâmica, as linhas, estarão definidas DENTRO do BLOCO DINÂMICO. O bloco dinâmico é delimitado pelos comentários HTML!

<!-- BEGIN DYNAMIC BLOCK: linhas -->
...corpo...
<!-- END DYNAMIC BLOCK: linhas -->


Deverá ser seguida minuciosamente as palavras do comentários. Ou seja, é case sensitive. Por isso mesmo coloque tudo em MAIÚSCULA!!

<table width="100%" border="0" align="center" class="fonte_tabela">
  <!-- BEGIN DYNAMIC BLOCK: linhas -->
  <tr>
    <td width='100%' colspan='0' rowspan='0'>
      <strong>{NOME}</strong><br>
      {FONE}<br>
    </td>
  <tr>
  <!-- END DYNAMIC BLOCK: linhas -->
</table>    

Bem pessoal é isso aí!!
Qualquer dúvida falem comigo!!!

Olavo Alexandrino
Recife - PE
www.recifeminhacidade.com.br

Nota: se você teve dificuldade no entendimento desse artigo, é aconselhável que primeiramente dê uma olhada nos artigos do Fábio Berbert de Paula, são muito bons!!

Página anterior    

Páginas do artigo
   1. Introdução
   2. Mãos à obra
Outros artigos deste autor

A simples classe Date Operations

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)

Paginando resultados com a classe Generic Easy Pagination

Polimorfismo e PHP 5

Leitura recomendada

Utilizando PEAR

Trabalhando conteúdo dinâmico com Smarty

PHP5 Orientado a Objetos: Visibilidade, herança e extensões de classes

Organizando projetos com a classe FastTemplate (parte 2)

Engenharia de Software - Fazer melhor o software e fazer o software melhor

  
Comentários
[1] Comentário enviado por fabio em 29/06/2003 - 04:34h

Essa classe fastTemplate realmente é fantástica, deixa se código PHP limpo e enxuto, tornando seu sistema incomparavelmente melhor que um sistema "código lixão", que é aquela mistura de PHP com HTML que você não se encontra no meio do ninho de magafa-gafa que foi criado.

Para quem não sabe, o Viva o Linux é 100% programado em PHP em conjunto com a classe fastTemplate, como diria o coder nerd usando templates:

$tpl->assign('{STATUS}', 'Da hora!!!!!');

Um abraço,
Fábio

[2] Comentário enviado por redstyle em 17/09/2004 - 22:09h

Blz,
Gostei disso.
Consegui fazer o uso de ifs no meu código:
$num = 2;
$teste = "Rodrigo";
$teste2 = "lalalalalalala";
$greeting = 'Olá mundo ! Estamos no phpbrasil.com :)';
if ($num == 5){
$model->assign('{TESTE}',$teste);
} else {
$model->assign('{TESTE}',$teste2);
}

Queria saber como seria um loop.

Parabéns pelo artigo.

[3] Comentário enviado por oalexandrino em 18/09/2004 - 01:07h

Olá,

Leia a segunda parte!

Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=275

[4] Comentário enviado por removido em 22/12/2005 - 10:35h


[5] Comentário enviado por wilbil em 26/01/2008 - 12:27h

e ai galera para quem como eu estava sofrendo com o projeto ja pençando em arrumar a classe do fasttemplate por conta própria achei um site que tem a classe arrumada para php5

http://tonda.czechit.net/2007/07/fasttemplates-optimized-for-php5.html

vamos la agradeçam ao cara eu fui o primeiro ele merece
falo isso pois tem uma empresa onde trabalho que foram varios projetos
e o principal com 7 anos de desenvolvimento imagina migrar tudo isso

falow
t+

[6] Comentário enviado por comfaa em 28/10/2008 - 13:01h

muito legal !!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts