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

gimbras

Sistema de Templates

Recommended Posts

gimbras

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.


Redcodestudio - Programação Web - http://www.redcodestudio.com/

Share this post


Link to post
Share on other sites
milks

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

Share this post


Link to post
Share on other sites
revX

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

Share this post


Link to post
Share on other sites
deathseeker25

Bom tutorial. Inamovível. :D

Obrigado pelo trabalho, mais uma vez, revX.

Share this post


Link to post
Share on other sites
alfatek

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]

Share this post


Link to post
Share on other sites
gimbras

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.


Redcodestudio - Programação Web - http://www.redcodestudio.com/

Share this post


Link to post
Share on other sites
milks

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 :)

Share this post


Link to post
Share on other sites
Gurzi

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 ?

Share this post


Link to post
Share on other sites
kingless

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...

Share this post


Link to post
Share on other sites
AriOps

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


Daniel Correia

Share this post


Link to post
Share on other sites
cyclop

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!


"Quando eu for grande quero ser como o Celso"

Share this post


Link to post
Share on other sites
Neptune(o verdadeiro)

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");
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.