Conheça o Plugfeed | » Início » Programação » PHP » Sistema de templates em PHP
Conheça o Plugfeed | » Início » Programação » PHP » Sistema de templates em PHP -->
 
Avaliação: | Publicado em: 11/06/2007
Sistema de templates em PHP
Daniel Krug Daniel Krug é estudante de Ciências da computação na UNISINOS e atua como programador PHP há 4 anos em Porto Alegre.


Sistema de templates em PHP

Criando um sistema de templates

Fala pessoal! Estou escrevendo meu primeiro artigo aqui no Plugmasters e gostaria de começar com um sistema de templates.

Bom, vamos lá, espero que apreciem.

Primeiramente vou falar da utilidade de um sistema de templates.

Imagine que você tenha um site e neste faça modificações com certa freqüência (para eventos, épocas do ano, datas comemorativas, por exemplo). Um sistema de templates tornará sua vida muito mais simples, uma vez que as alterações serão apenas no arquivo do template, deixando o resto do sistema intacto. Um exemplo disso é o próprio site do Google, que tem modificações em datas especiais, como natal, ano novo, dia das crianças e outras mais. Outros exemplos são sites do terra e ig, que geralmente “mutam” uma vez por ano.

Assim, o site terá no mínimo duas camadas: Uma camada da Interface com Usuário (template) e o Modelo de Negócio (programação). Geralmente temos também o Acesso aos dados, mas disso falaremos em outra ocasião.

Isto é um dos princípios da programação em camadas, o que é uma boa leitura para todos que ainda não conhecem.

Para continuar vou pegar um template de exemplo. Eu baixei o Happy_Blog na seção Layouts Prontos aqui do Plugmasters
Clique aqui

Aqui o temos:

Temos então três colunas:

Lateral esquerda: Área do menu.
Central: Área onde colocaremos o conteúdo principal e dos links do menu.
Lateral direita: Área de banners, links e demais conteúdos.

Neste exemplo temos o seguinte HTML

Vamos salvar uma cópia deste arquivo e separá-lo em partes. Primeiro a área do menu. Apague seu conteúdo e coloque o marcador %MENU% (alguns chamam esta técnica de variáveis em HTML). Fica assim:

Reparem que já cortei a área de conteúdo e de banners e coloquei seus respectivos marcadores. 

Como vocês podem ver, o HTML ficou muito simples.
Salve este arquivo com o nome de template.php e edite-o para que fique entre as tags PHP, colocando tudo dentro da variável template. Deverá ficar assim:

Pegue as partes cortadas e salve em arquivos distintos: inc_banners.php, inc_snippet_index.php e inc_menu.php.

inc_banners.php:

inc_snippet_index.php:

inc_menu.php:

Este conceito de arquivos auxiliares (snippets) é bastante interessante, pois cada arquivo é responsável apenas para aquilo que ele foi desenhado.

Vamos criar o arquivo index.php, este é o arquivo que gerenciará todas estas informações do site:

 

Nas primeiras linhas já fizemos a inclusão do template. Poderíamos também fazer esta inclusão com o template dentro de um banco de dados, o que é de igual simplicidade.

Depois incluímos os arquivos auxiliares que criamos e o snippet.

Na linha 8 temos o condicional, onde, se existir um snippet ele é incluído, caso contrário, será incluído o snippet da página inicial.

Um exemplo seria colocar no menu (ou qualquer outro lugar) um link como:
<a href=”index.php?snippet=fale_conosco”>Fale Conosco</a>

Com isto a linha 14 do index.php seria executada, fazendo o include assim: <?php include ("includes/inc_snippet_fale_conosco.php"); ?>

Bom, terminho por aqui este artigo, lembrando que este é um exemplo bastante simples, mas com algum empenho você poderá criar sistemas bem mais complexos tendo como vantagem a manutenção facilitada.

Baixe aqui o exemplo que criamos hoje:

Espero ter colaborado e também continuar escrevendo aqui. Aguardo sugestões para próximos artigos.

Um abraço e até mais!

Daniel Krug

Arquivos anexos ao artigo

Achei legal o artigo, facilita a vida de webmasters.
Sohvarh
Péssimo artigo! Péssimo jeito de programar! Péssima forma de se trabalhar com templates!
JeanmDias
Bem, discordo do amigo ae de cima, o sistema de templates é muito bom, tem uma utilidade espetacular. Não entendi porque achou ruim? Argumente melhor seu comentário.

Daniel, parabéns pelo artigo.
Rafael S.
Também achei bom, com algunas resalvas, mas bom no geral.
Muito bom. Forma simples de facilitar a vida do desenvolvedor web tornando o layout e regras mais independentes uma de outra.
Legal!!! Mão na roda.
po cara me vc que entende do asunto me faça um modelo legal pra min eu faço site de download mais o mecho com HTML ve ai meu site http://www.turbodownloads.baixa.la/
gostei.. mas num tem como fazer isso utilizando orientação a objetos nao??
ouvo dizer q eh melhor
Daniel Krug
Basto.

Na verdade isto já deixa preparado para orientação a objetos. Dê uma olhada em Arquitetura MVC. : Não avaliado
Na verdade essa é uam maneira ruim de se trabalhar, você esta criando uma variavel STRING e colocando o conteudo dentro dela, o melhor seria trabalhar com um sistema de template, ou então no teu caso você poderia deixar o arquivo(para fins didaticos) em um HTML e através da função file_get_contents

porque ai você não precisaria colocar o "template" em uma variavel e sim em um arquivo realmente, que você transformaria numa variavel para poder substituir as variaveis antes de manda-las para a tela.


Daniel Krug
Zé!

Na verdade isto está servindo só de exemplo. A partir daí você pode buscar outras soluções, como vc mesmo falou do file_get_contents ou ainda buscar do banco de dados. Aí vai da criatividade e do "gosto" de cada um.

Um abraço! : Não avaliado
Concordo com Sohvarh, não é legal progromar assim. Aliás, um retorcesso. Pode servir de exemplo, mas é a para o básico da básico, inicio dos inicios. Template de verdade é Smarty smarty.php.net

Daniel Krug
Fabio, como você disse e eu citei no artigo, este é um exemplo bastante simples. Agora, quando a usar smarty ou não vai da escolha, necessidade e CRIATIVIDADE de cada um.
Por isso que não surge um google no Brasil.

Abraço! : Não avaliado
Otimo!!!
Muito Bom !!!
Pra mim que estou começando no mundo da programação na linguagem PHP ajudou muito!!!
espero que nao fique só nesse artigo!!

parabens t=!
achei interessante, nao teria outros exemplos? valeu!
Luiz Rafael Passari
O tutorial está muito bom mas acho esta técnica ultrapassada, uma vez que já temos classes como o Smarty que faz todo esse serviço para nós.
Rafael
Ao trabalhar com templates, o principal ganho deve ser de separar o html do php. Não vi em nenhum momento vc separando o layout do php. Muito pelo contrário, colocou o html DENTRO do php. Nenhum designer vai querer trabalhar assim....

Sem contar que a manutenção fica mais trabalhosa sim, uma vez que precisamos escrever o html na mão, não podendo usar ferramentas visuais para o auxilio. Verifique como o Smarty funciona para entender. Sem contar outros modelos realmente MVC.

Abraços
Beto Eytcha <betoeytcha@hotmail.com>
Estou começando agora, este tutorial deu uma grande mão para o meu aprendizado.
isso é tosquera mano¬¬
Ah cara, eu nao gosto de usar assim não, prefiro outros métodos, tem o smarty tambem...

's
Dorfo
Mesmo para os inisciantes, são necessários exemplos de boas práticas de programação. Não é apenas questão de gosto, como citado.
Matioli
Cara, vou ser obrigado a concordar com o pessoal. A sua idéia inicial foi muito boa, separar o código do conteúdo, porém a forma como aplicou não foi muito legal. Você mesmo disse esse é um modelo simples, mas acho que deveria ter implementado pelo menos a leitura (com o file_get_contents) de um arquivo ao invés de colocar em variáveis, assim já deixa os novatos mais engatilhados numa programação melhor, e facilita bem mais OO e trabalho em camadas...

Desculpa a critica, abços
Éverton de Oliveira Paiva <evertonpaiva@gmail.com>
Excelente artigo, simples, objetivo, e uma opção pra que não quer usar um motor de templates muito complexo. Acredito que vou usar a idéia.
Bom demais !
Michel Camargo <contato@abusarweb.com.br>
Ola Amigo, adorei o artigos, a unica coisa que eu me pergunto é que vantagem tem esse processo do processo de dividir em módulos o site e incluir com o comando include?

Um Abraço.
alberto marlboro <me@albertomarlboro.co.cc>
O Smarty te deixa amarrado, é bom saber como as coisas funcionam.

Parabéns pelo artigo, obrigado por compartilhar.

Aos detratores digo que é fácil jogar pedra, difícil é ser vidraça. Sugiro que façam um tuto/artigo com suas idéias e compartilhem.
Gustavo Vinicius <gustavovgp@gmail.com>
muito bom, me ajudou demais, belo post, valeu!
Realmente muito bom, gostei bastante.
Muitos fazeram más críticas, e tenho certeza que muitos dos que reclamaram falando bem de "Smarty Smarty" nao sabem usar o Smarty ou estao começando a usar, e já se acham os maiores programadores do mundo. E alguns nao querem nem usar HTML, querem ter chance de usar ferramentas graficas onde só é arrastar e soltar e tá feito.

Muito bom. tenho certeza que vai ajudar a muitos.
E dica: Pesquisem bastante. E o gosto de usar esse método ou nao fica ao critério de cada um.


OTIMO!
fazia muito tempo que estava procurando informação sobre isso e nunca achava nada realmente bem explicado! Parabens