• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

Sistema minimalista de templates

13 mensagens neste tópico

Ora viva!

Aqui vai o meu folar da páscoa.

Decidi partilhar convosco o meu sistema de templates. É tão simples quanto um sistema de templates pode ser. Bem minimalista como eu gosto.

Tudo o que faz é substituir tags por conteudo.

O nazgulled já tinha escrito um sistema deste tipo, mas fica aqui a minha solução tambem.

http://wiki.portugal-a-programar.pt/dev_web:php:sistema_minimalista_de_tempaltes

Alguem tenha a bondade de incluir uns estilos css no template para se ver melhor o efeito.

Por motivos de simplicidade seria conveninete incluir o CSS no mesmo ficheiro, para não confundir o leitor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uso o mesmo sistema que tu, mas uso antes <!-- { seccao: nome} --> e não uso uma função load_template() :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu quando li minimalista não estava à espera de algo assim lol. É mesmo minimalista, mas serve o seu propósito.

@djthyrax

Então como é que carregas o template? Tens que usar alguma função do género, independentemente do nome que lhe deres. E não percebo a necessidade de pores as tags dentro de comentários, mas pronto, opções.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu quando li minimalista não estava à espera de algo assim lol. É mesmo minimalista, mas serve o seu propósito.

@djthyrax

Então como é que carregas o template? Tens que usar alguma função do género, independentemente do nome que lhe deres. E não percebo a necessidade de pores as tags dentro de comentários, mas pronto, opções.

Eu, SUPONHO, que as tags dentro dos comentários se devam ao facto de num editor se ver melhor, devido à coloração do código... mas isso sou eu a opinar :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E para quem usa o notepad? Só fica mais confuso lol... Opções :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E para quem usa o notepad? Só fica mais confuso lol... Opções :)

Exacto, opções :P Eu, por exemplo, uso mais ou menos o mesmo sistema do que tu, com mais coisa, menos coisa, e não me queixo, é bastante eficiente, e serve perfeitamente as minhas necessidades, por tanto, enquanto não vir melhor, não mudo :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas de certeza que há melhor, ou estás a falar de algo que seja melhor mas continue simples? É que nesse caso, não devem existir muitas alternativas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas de certeza que há melhor, ou estás a falar de algo que seja melhor mas continue simples? É que nesse caso, não devem existir muitas alternativas.

Estava a falar de melhor mas coma  mesma simplicidade (ou menos um pouco), porque sim existe melhor, mas mais complexo e, por isso, para já está fora das minhas cogitações :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@djthyrax

Então como é que carregas o template? Tens que usar alguma função do género, independentemente do nome que lhe deres. E não percebo a necessidade de pores as tags dentro de comentários, mas pronto, opções.

Eu sou um one liner guy por natureza :D
// $array = definição que o pedrotuga fez ali com as substituições.
// $template = nome do file do template

echo str_replace(array_keys($array), $array, file_get_contents($template));

Em relação ao pôr dentro de comentários, deve-se ao facto de ele não aparecer assim à bruta ao browser caso eu adicione algum campo novo no template e me esqueça de adicionar no código PHP, e também pelo facto de o Geany mostrar de cor diferente :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lol, eu gosto que ele aparece assim "à bruta no browser", tipo, se me faltar adicionar ao código PHP, vou reparar nisso eventualmente, com comentários, pode-me passar ao lado.

Podes não ter uma função load_template mas vais ter uma função para executar essa linha de código, o que vai dar ao mesmo. No código do pedrotuga ele só usou um função que invoca o código que trata do template, assim como tu. E não me digas que não crias nenhuma função e que repetes esse str_replace, porque isso não faz sentido nenhum e não é boa programação :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

[quote name='Nazgulled' timestamp='1206298736' post='174720']
Lol, eu gosto que ele aparece assim "à bruta no browser", tipo, se me faltar adicionar ao código PHP, vou reparar nisso eventualmente, com comentários, pode-me passar ao lado.

São opções...

Podes não ter uma função load_template mas vais ter uma função para executar essa linha de código, o que vai dar ao mesmo. No código do pedrotuga ele só usou um função que invoca o código que trata do template, assim como tu. E não me digas que não crias nenhuma função e que repetes esse str_replace, porque isso não faz sentido nenhum e não é boa programação :D

Eu não repito um str_replace num sistema de templates, vai contra os meus principios. :P O que ele fez foi reduzir o código que escrevi numa outra função, e como disse, são opções, tal como iterar um array ou usar um map(). Eu pessoalmente prefiro uma linha destas do que "gastar linhas" a definir uma função, assim sei sempre o que estou a fazer ali, sem ter de ir procurar onde defini o raio da função. :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

olá

Sou novo em PHP...

Andava a procura de sistemas de templates como este, e este parceume ser o mais simples e funcional que achei.

Mas tenho uma duvida.

Pode ser usado includes?

por exemplo substitui o seguinte para fazer o include:

	"CABECALHO" =>  include("ola.php") ,	

O problema é que para além de o include dar correctamente, a seguir apare-se um número 1.

Não percebo porque, já em outros sistemas de template que usei anteriormente aconteceu o mesmo.

Alguém me poderia ajudar?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O includenão pode ser usado com essa sintaxe. Isto porque o include executa o código no ficheiro ola.php e supostamente, se ola.php é um template, nem sequer conterá PHP válido.

O que queres é processar um template e injectar o resultado noutro template. Isso sim, é possível com este sistema.

Penso que é qualquer coisa como isto que queres. Se tiveres dúvidas afixa aí.

$tagstitle = array(
"TITULO" => 'Titulo num template separado'
);

$head = load_template("head.tpl.html",$tagstitle);

$tags = array(
"TITULO" => $head ,
       "CONTENT" => "blablablablooblabalbloo"
);

echo load_template("page.tpl.html",$tags);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora