codesignville, 19 de Agosto de 2008 ManhãTardeNoite

Dando poder ao CSS com PHP




Em muitos casos desejamos que o layout de nossas páginas varie conforme alguma situação, tipo de visitante, local ou outra característica. Isso aconteceu em codesignville, onde eu desejei que existissem 3 CSS distintos para cada período do dia (manhã, tarde e noite). Dessa forma, dependendo do horário de visitação, o conteúdo do site é mostrado de acordo com o período.

Para tal, eu poderia ter criado 3 arquivos CSS mudando as propriedades daquilo que fosse interessante ou desejável, e com PHP fazer o direcionamento de qual CSS usar. Porém, a manutenção do CSS do site seria trabalhosa, já que para uma simples mudança de cor da tag p, por exemplo, eu teria que alterar em 3 arquivos, no meu caso.

No entanto, existe uma solução bem melhor, que utiliza um arquivo PHP como arquivo CSS e dentro dele eu programo as checagens e os direcionamentos desejados. Primeiramente, é obrigatório informar que o conteúdo desse arquivo PHP será do tipo CSS. Para isso, basta incluir no início do mesmo a seguinte linha:

header('Content-type: text/css');

Em seguida seguida são feitas as checagens necessárias (cookies, sessões, variáveis, informações do visitante, etc) para poder determinar as variáveis que serão utilizadas no decorrer do arquivo e que configurarão o CSS. No caso de Codesignville, gravei um cookie com javascript para pegar a hora do visitante e atribuí à variável hl os valores possíveis (manhã, tarde e noite). Depois referenciei o CSS como um arquivo PHP passando como parâmetro essa variável hl, que será usada no arquivo CSS/PHP para configurá-lo:

<link rel="stylesheet" type="text/css" >>
media="screen" href="principal.php?hl=noite" >>
title="Estilo Noite | Evening Style" />

No início do arquivo principal.php (que na verdade é o CSS do site) temos a configuração das variáveis que serão usadas no decorrer do arquivo:

$hl=$_GET['hl'];
switch ($hl){
     case "noite":
          $cor="#4f526d";
          ...
          ...
          break;
     case "manha":
          $cor="#9cf";
          ...
          ...
          break;
     case "tarde":
          $cor="#f96";
          ...
          ...
          break;
     default:
          $cor="#9cf";
          ...
          ...
          break;
}

Em seguida, continuo com o desenvolvimento normal do CSS, porém estarei usando as variáveis configuradas acima na propriedades.

h1.post {
    font: italic 2.4em Georgia, "Times New >>
    Roman", Serif;
    color: <?=$cor?>;
    margin-bottom: 12px;
}

Dessa forma, utiliza-se apenas um arquivo CSS mas com possibilidades variadas de configuração e uso. Tudo dependerá do contexto e da necessidade do site.

Comente esse artigocomente este artigo









#1 Vinicius

enviado em 17|07|2007 @ 16:25:35

Cara muito legal isso... será que eu consigo pegar atributos do CSS e jogar em uma variável de php? Vc sabe se dá pra fazer isso ?

#2 Pedro Assumpção

enviado em 18|07|2007 @ 12:37:07

Oi Vinicius,
se você está falando sobre pegar via PHP um valor contido em um seletor (p, h1, a, etc) talvez usando funções DOM do PHP. Dá uma olhada em Funções DOM no PHP. Essas funções são úteis para ler arquivos XML mas também em XHTML.
Se preferir, também pode usar Javascript, do tipo document.GetElementbyId('nome-do-id').style.fontSize, por exemplo, atribuir em uma variável javascript e gravar um cookie. Depois basta ler esse cookie com PHP. São duas opções que vejo.
Abs, Pedro.

prefeitura

O prefeito de Codesignville,
sr. Pedro Assumpção, é pós-graduado em Design Gráfico, trabalha com tratamento de imagens, desenvolve sites utilizando web standards, css e php, mas acima de tudo tem Jesus Cristo como Senhor de sua vida. Atualmente mora em
Blumenau, SC, Brasil.
-26.892536 -49.094204
Portfolio: Modena Design Studio

bairros

museus

biblioteca


aeroportos

Feeds RSSRSS

StumbleUponStumbleUpon

Adicionar ao StumbleUpon
StumbleUpon Profile

Del.icio.usDel.icio.us


Del.icio.us Bookmarks
Del.icio.us Network

TechnoratiTechnorati

codesignville no Technorati
Technorati Favorite
Technorati Profile

FlickrFlickr

 

CODESIGNVILLE
fundada em 11 de junho de 2007
XHTML 1.1 | CSS | Microformats | Smashing Magazine
© 2008 Codesignville. Todos os direitos reservados.