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

HolyMurderer

Como fazer um sistema de templates?

19 mensagens neste tópico

Boas!

Gostaria de saber como vocês aconselham a fazer um sistema de templates em PHP, parecido com o que está no site dos metallica.

A ideia seria ter uma Combo Box também, com temas, em que o utilizador que está a ver a página troca a skin para si, apenas para si.

Tenho a template base feita com utilização de OOP, que funciona bem. Se fosse para ter uma página com apenas 1 theme, ou 1 template, como preferirem, o site estaria pronto. A ideia agora seria arranjar algum tipo de sistema de cookies, variáveis, pastas, algo do tipo, para cada utilizador definir o seu theme definitivamente, enquanto o cookie se mantivesse. Penso que utilizar DB's não será a melhor escolha, pois cada utilizador verá o seu theme, tendo em conta que não existirá suporte para registo de utilizadores.

Penso ser uma boa forma de o fazer, não? Que fariam? Alguma dica que tenham é bem vinda.

Já agora, como vocês fariam se fosse um theme fixo para todos, mas que pudesse ser alterado por um admin? Punham uma DB com a indicação do theme, em que ficava definido a pasta onde o theme ficava, para ser utilizado depois, ou algo desse tipo?

Obrigado e um abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, podes fazer como eu fiz no meu site http://lurst.funpic.org (cuidado com a publicidade) que com javascript ele troca o stylesheet, vais ver que a unica alteracao que aparece la é as cores, mas eu podia ter feito alteracoes muito maiores, já que a mudanca  so depende dos teus conhecimentos em CSS.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes fazer como eu fiz, 1 entrada na base da dados, com o numa tabela configs ou assim kker coisa, o campo style estar definido, como kker coisa e num ficheiro sytle.php ia buscar o estilo,mas s calhar como o LuRsT disse é mais simples...

mesmo assim deixo aqui o meu codigo...

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
if ($cfg[2] == "blue") { ?>
<style>
@import 'styles/blue.css';
</style>
<?php }
if ($cfg[2] == "red") {
?>
<style>
@import 'styles/red.css';
</style>
<?php }
if ($cfg[2] == "white") {
?>
<style>
@import 'styles/white.css';
</style>
<?php } ?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Psiico, assim era mais simples:

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
if ($cfg[2] == "blue") {$color="blue"  }
if ($cfg[2] == "red") { $color="red"  }
if ($cfg[2] == "white") {$color="white"  } ?>
<style>
@import 'styles/<?=$color?>.css';
</style>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Psiico, assim era mais simples:

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
if ($cfg[2] == "blue") {$color="blue"  }
if ($cfg[2] == "red") { $color="red"  }
if ($cfg[2] == "white") {$color="white"  } ?>
<style>
@import 'styles/<?=$color?>.css';
</style>

Existem muitas formas:

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
if ($cfg[2] == "blue") $color="blue"  
elseif ($cfg[2] == "red") $color="red"  
elseif ($cfg[2] == "white") $color="white"   ?>
<style>
@import 'styles/<?php echo $color; ?>.css';
</style>

Embora prefira este:

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
$color = empty($cfg[2]) ? 'default' : $cfg[2];   ?>
<style>
@import url('styles/<?php echo $color; ?>.css');
</style>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pelas vossas respostas, mas os themes não irão ser só variados em css, mas sim em imagens e tudo... ou seja, cada theme terá o seu proprio layout, com imagens, variaveis para definir o conteudo, claro, mas em que cada um tem as suas proprias imagens, o seu proprio css, etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Psiico, assim era mais simples:

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
if ($cfg[2] == "blue") {$color="blue"  }
if ($cfg[2] == "red") { $color="red"  }
if ($cfg[2] == "white") {$color="white"  } ?>
<style>
@import 'styles/<?=$color?>.css';
</style>

sim, bem visto,poupavas na linha de codigo e era + "custumizable"

vou adaptar isso :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e se for assm ?

<?php
$cfg = mysql_fetch_array(mysql_query("select style from sys_cfg"));
?>
<style>
@import 'styles/<?= $cfg[2] ?>.css';
</style>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina que algum hacker descobre uma falha que lhe permite alterar o conteudo da base de dados.

Se o que lá estiver não for filtrado, qualquer coisa que esteja no campo onde so devia estar red, blue ou green será impressa no browser da pessoa, fazendo com que seja possivel a um hacker executar qualquer codigo em qualquer PC que abra esse site.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

quanto ao sistema de templates :hmm:, é possível fazer de diversas formas. se dermos uma olhadela aos cms, eles usam várias implementações de sistema de templates.. uns melhores, outros piores..

no entanto, um exemplo do que eu considero um bom sistema de templates é o caso do joomla ou mambo..

a ideia passa por criar um ficheiro principal index.php em que se carrega informação da base de dados, faz-se includes de ficheiros, etc.. e só no fim de ter um conjunto de tarefas concluídas apresenta-se o template.. cada template criado é colocado na pasta templates..

Um exemplo deste sistema. Imaginemos que criamos um site xpto. Criamos a pasta do site xpto e dentro dela criamos o ficheiro index.php e a pasta templates. No ficheiro index.php colocamos aquilo que o site tem necessidade de fazer, como consultas na base de dados, tratamentos dos dados post ou get, etc e no fim, a ultima instrução que introduzimos é

include("templates/metal/index.php")

que é o ficheiro principal do template com o nome metal. Ou seja depois do site ter carregado todas as informações necessário é necessário apresentar o layout.

Depois cria-se a pasta destinada ao template em templates/nome_do_template e dentro dela cria-se o ficheiro index.php. É nesta pasta que desenvolvemos o template desde as css até às imagens.

Para criar outro, repetimos o ultimo processo com outro nome de template. Para que o site permita a escolha de template, é necessário criar em todos os templates a select list com o nomes dos templates com a acção onchange para que o site seja mudado para outro template.

o ideal era usar um template engine, como o smarty ou o patTemplate, para separar o conteudo da apresentação do site. Este método torna mt mais facil o desenvolvimento do site.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ht, conheço o Joomla, Mambo, Drupal, etc, mas a questão seria fazer mesmo um de raíz, para aprender.

Se alguém tiver dicas sobre o método de fazer um template system, idêntico ao do site dos metallica, agradecia. Pretendo mais propriamente saber o método utilizado, depois implementarei a programação e discutirei dúvidas, mas, por enquanto, seria mais propriamente o plano sobre a estrutura desse sistema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

HolyMurdererm, se calhar não fui claro naquilo que disse... O que eu pretendia dizer era, que através dos cms existentes, há várias formas de criar um sistema de templates (de raíz). A minha ideia era apenas mostrar uma delas. Ou seja, através destes cms, se olharmos para o respectivo código podemos aprender a implementar esse sistema.

Mas se o teu objectivo é criar um sistema diferente dos cms então é necessário, digamos, fazer uma análise daquilo que pretendes e só depois partir para a implementação..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok, já que falam tão bem do smarty, irei tentar também, vou avaliar as hipóteses para ver o que necessito. O sistema que pretendo é tipo o do Joomla com a extensão Template Chooser, ou seja, cada pessoa escolher o tema que pretende ver, tal como também o site dos metallica tem. Vou ver as várias hipóteses.

Se tiverem mais dicas eu agradeço :)

Obrigado por tudo até agora.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É só para dizer que tive a testar o Smarty, mas não me ajudou em nada. O que o Smarty faz, ou não me ajuda, ou já tinha feito no site que eu estou a fazer por mim próprio.

O que pretendo mesmo então é o que referi acima, ou seja, apenas o raciocínio, o método, o esquema, de como fazer uma troca de templates/skins num site, em que a troca é feita através duma combo box, em que o user escolhe uma outra template e o site mostra apenas para essa pessoa o site com o theme escolhido. Basicamente, apenas pretendo a teoria de como o fazer.

Se alguém me puder ajudar nisso, agradecia.

Obrigado mais uma vez :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então mas podes fazê-lo facilmente via Smarty...

Limitas-te a criar vários themes e com sessions mudas o theme para cada utilizador...

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