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

gimbras

Sistema de Templates

19 mensagens neste tópico

Alguém me dá umas luzes básicas sobre como colocar páginas de template .TPL a funcionar num ficheiro .PHP

Explicando melhor, temos a index.php e depois temos uns ficheiros .TPL da header, do corpo (main), e do footer.

Eu costumo fazer assim:

<?PHP
include("path/header.php");
?>

Mas queria usar mesmo ficheiros template, mas não sei como se incluem no código.

revX: já tinhamos falado disto, se puderes explicar com um mini-tutorial (se for preciso tanto) agradecia.

Quem quiser ajudar força e obg.

Cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sem ter a certeza se é isto que queres, podes incluir da mesma forma, usando o include ou o require, no ficheiro .tpl deves ter as variaveis e depois é so definires os valores que essas variaveis vao ter antes de incluires o ficheiro.

ficheiro.php

<?php
$var1 = 'Hello World!';
require_once('template.tpl');
?>

template.tpl

<?php
<html>
<body>
<h1><?=$var1;?></h1>
</body>
</html>
?>

Penso que possas fazer assim, mas existem outras formas, talvez a forma que o revX te explique seja melhor, pois esta apenas estás a incluir na mesma o ficheiro, simplesmente as variaveis são definidas noutro lugar.

Podes também usar outra forma de escrever as variaveis, usando tipo #var1#, leres o ficheiro e substituires #var1# pelo valor de $var1. O Smarty funciona mais ou menos assim, mas tem uma sintaxe diferente de php para os templates, a vantagem é que estas a separar a informação da estrutura, e depois é só separares a estrutura do design (usando CSS) para teres um sistema mais fácil de manter :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hm... eu costumo fazer com tema.php mas tenho a certeza que que fazer a função com php num tpl é o mesmo.... :twisted:

Aqui vai...

Criamos a pasta temas (é um bom começo :-D ) depois criamos a pasta do nosso tema para depois ser facil trocar de tema, vamos chamar-lhe base....

ora bem dentro da pasta 'base' vamos criar um ficheiro chamado tema.tpl e vamos fazer algo do genero de :

<?php
function cabecalho(){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
 <link rel="stylesheet" href="temas/base/estilo.css" type="text/css" media="all" />
 <title>Tema Base</title>
</head>
<body>
<?php
}
function conteudo(){
?>

[ Aqui não metam nada pois é onde fica o conteúdo, simplesmente apaguem este comentário ]

<?php
}
function rodape(){
?>
</body>
</html>
<?php
}
?>

Eu pus o código para o file estilo.css pois presumo que o usem :?

De seguida no index.php ou onde quisermos que seja usado o tema na raiz do script pomos assim :


<? 
/* Ficheiro Incluido *********************/
session_start(); 
include ("temas/base/tema.tpl");
/*************************************/

cabecalho();
?>
<?php
conteudo();
?>
<? 
//Aqui podem inclusive fazer a variação e ligação às paginas  de conteúdo
//Aqui fica o exemplo, apesar de poderem por aqui o conteúdo mas dá mais trabalho e é menos organizado...
// os urls com isto ficarão index.php?ver=pagina

switch ($ver) {
case 'pagina1':
include( 'pagina1.php' );
   break;
case 'pagina2':
include( 'página2.php' );
   break;
default:
   echo "Página inexistente";
   break;
}

?>

<?php
rodape();

?>


E aqui fica a leitura do tema... lógico que podiamos fazer vários ficheiros, incluir todos num ficheiro chamado index.php e fazer a ligação a esse file... como no phpBB... se quiserem um exemplo com mais de um ficheiro tpl digam :twisted:

Próps...

Atenção isto foi testado - P.s. a extensao nao interessa ate podiamos lhe chamar tema.portugal-a-programar roftl :-D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mta boa ajuda, mto obg a todos :D

Que porreirinho.

Vou já experimentar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom tutorial. Inamovível. :D

Obrigado pelo trabalho, mais uma vez, revX.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O ideal é  mesmo usar algo como o smarty: smarty.php.net que não é muito dificil de usar e tem vários addons para ajudar a fazer uma quantidade de coisas (formularios por exemplo). E isso sim é um sistema de templates completo, que obriga a seguires uma boa separaçao e organização do código.

E já agora, o desafio é n meterem código html em nenhum ficheiro .php, apenas nos .tpl's :confused: [ok, n digo nenhum, mas muito muito pouco]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha o alfatek :thumbsup: Welcome.

Vou seguir tmb o teu conselho. Conselhos de um mestre que aprendeu tudo sozinho e bem falem sempre a pena!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está-me a dar este erro:

Notice: Undefined variable: ver in d:\os meus documentos\servidor\www\testes\index.php on line 17

Página inexistente

Parece que há um problema com a variavel ver. Segui todos os passos que o revX disse. Deve faltar qualquer coisa. Peço ajuda.

Obg.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é da variavel $ver não estar definida, e também porque para ires buscar uma variavel ao URL, tens de usar $_GET['ver'] ou seja, o switch deve ficar assim

<?
switch($_GET['ver']) [...etc etc...]
?>

Mas para teres a certeza que não dá mais esse erro, e que $ver fica sempre com algum valor deves adicionar mais uma linha antes do switch

<?

$ver = isset($_GET['ver']) ? $_GET['ver'] : 'pagina1.php';

switch($ver) [... etc etc ...]

?>

Para explicar, na 1ª linha o que faz é uma verificação booleana, se estiver definida a var $_GET['ver'] então a var $ver fica com o valor dela (o que está antes dos ':') se não, fica com o valor 'pagina1.php'

Acho que isto deve resolver o teu problema, se não, posta, que o pessoal dá uma vista de olhos :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou ver se percebi bem...

Eu queria fazer uma coisa, que era um software geral de controlo de Papelaria.. mas que não fosse específico e open source, ok, mas o que queria realmente é que cada empresa tivesse um painel de administração que podia colocar lá um template e a página inicial(index.php) aparecia com o template que essa empresa queria, ou seja logo da empresa etc etc...

Outra dúvida mas sem ter a ver com isto, se eu quiser implementar um sistema Php/ Sql mas que não use a Internet(motivos de segurança) ou seja é tudo feito em rede, que preciso de fazer ?

Imaginem que um computador Linux faz de servidor na escola

e tenho um na papelaria ligado por um cabo de rede , como é que indico no programa que estou a desenvolver por exemplo

include "tiago.php" estando o tiago.php na pasta /var/www/html do servidor

e como é que esse pc que é o client se liga a lá para ver os conteudos ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Outra dúvida mas sem ter a ver com isto, se eu quiser implementar um sistema Php/ Sql mas que não use a Internet(motivos de segurança) ou seja é tudo feito em rede, que preciso de fazer ?

Imaginem que um computador Linux faz de servidor na escola

e tenho um na papelaria ligado por um cabo de rede , como é que indico no programa que estou a desenvolver por exemplo

include "tiago.php" estando o tiago.php na pasta /var/www/html do servidor

e como é que esse pc que é o client se liga a lá para ver os conteudos ?

Podes desenvolver um sistema php/sql localmente sem internet mas acho que para outras pessoas verem o site tens que ter acesso a internet, só por um cabo de rede acho que não da.

Quanto ao include podes fazer  include '/var/www/html/tiago.php';

Espero ter ajudado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Outra dúvida mas sem ter a ver com isto, se eu quiser implementar um sistema Php/ Sql mas que não use a Internet(motivos de segurança) ou seja é tudo feito em rede, que preciso de fazer ?

Imaginem que um computador Linux faz de servidor na escola

e tenho um na papelaria ligado por um cabo de rede , como é que indico no programa que estou a desenvolver por exemplo

include "tiago.php" estando o tiago.php na pasta /var/www/html do servidor

e como é que esse pc que é o client se liga a lá para ver os conteudos ?

Podes desenvolver um sistema php/sql localmente sem internet mas acho que para outras pessoas verem o site tens que ter acesso a internet, só por um cabo de rede acho que não da.

Quanto ao include podes fazer  include '/var/www/html/tiago.php';

Espero ter ajudado...

Para acederes ao pc em rede (servidor) basta fazeres //nomedopc e ficas logo com a página principal do server.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa mas é o DreamWeaver! Com o sistema de library e template é o melhor, na minha opiniao é claro :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora viva se pretendes desenvolver um sistema de templates, o básico que se deve fazer será:

-> carregar um ficheiro

-> defenir variaveis

-> Substituir as variaveis pelo que se deseja....

-> criar outras opções, loops apartar de arrays... etc...

qqr duvida, é so avisar!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, eu criei isto para o meu site, pode ser que vos ajude :P

function tema_cima() {
global $ss_uri;

header("Content-Type: text/html; charset=iso-8859-1");

if (!$ss_uri)
{
($r = mysql_query("SELECT uri FROM temas WHERE id=1")) or die(Erro, não é possível aceder à bd);
($a = mysql_fetch_array($r)) or die(Erro, não é possível aceder à bd);
$ss_uri = $a["uri"];
}

require_once("temas/" . $ss_uri . "/tema_cima.php");


}

function tema_baixo()
{
global $ss_uri;


if (!$ss_uri)
{
($r = mysql_query("SELECT uri FROM temas WHERE id=1")) or die(Erro, não é possível aceder à bd);
($a = mysql_fetch_array($r)) or die(Erro, não é possível aceder à bd);
$ss_uri = $a["uri"];
}

require_once("temas/" . $ss_uri . "/tema_baixo.php");
}

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