Změna CSS stylů pomocí PHP

Napsal O webu (») 28. 7. 2004 v kategorii PHP/HTML, přečteno: 3500×

Jednoduchý způsob, jak načítat různé CSS soubory pomocí PHP.

Vaše stránky jistě velmi ozvláštní a osvěží, když uživateli nabídnete více vzhledů stránky. Pro vás to ale nemusí znamenat dělat dvacet různých stránek. Stačí jeden zdrojový kód a ostatní už zařídí CSS. Jak udělat kopmletní CSS layout tu teď rozebírat nebudeme, jelikož je to na moc dlouho a takových článků jsou tuny.

Řekněme tedy, že máme web který je kompletně v CSS layoutu a máme k němu více externích souborů. Nejprve jak to teoreticky provedeme. Do souboru si pomocí tagu link nenačteme konkrétní styl, ale soubor style.php, jež nás přesměruje na daný styl, který odpovídá hodnotě proměnné style, předané metodou GET.

Nyní se podívejme na to, jak zařídíme, aby po kliknutí na odkaz, který má změnit styl, k tomuto došlo. Řekněme, že máme dva styly, default.css a oranzova.css.

Do těla stránky, třeba index.php umístíme tyto odkazy:

...
<a href="?<? print $GLOBALS[HTTP_SERVER_VARS][QUERY_STRING]; ?>style=default">základní</a>
<a href="?<? print $GLOBALS[HTTP_SERVER_VARS][QUERY_STRING]; ?>style=oranzova">oranžový</a>
...

To, že neuvádíme název souboru, ale pouze předáme proměnnou, nám zaručí, že i když budeme mít třeba hlavičku s odkazy includovanou, styl se zobrazí přesně na té samé variantě php stránky, kterou právě prohlížíme. Navíc k odkazu ještě přidáme původní hodnoty předané metodou GET. Když klikneme na odkaz, začne se zpracovávat ta samá stránka, navíc ale s obsahem proměnné style. V úvodu každé stránky, popřípadě v hlavičce s odkazy includované přes PHP, musíme mít kontrolu jestli má proměnná style hodnotu. Pokud je prázdná, třeba v případě že uživatel je na stránce poprvé, přiřadíme jí hodnotu default. Takto:

<?php
$style = $_GET['style'];

if(!trim($style))
{
$style = "default";
}

?>
<!DOCTYPE ...

Kontrolu neexistujících hodnot, které může uživatel zadat, zkontrolujeme až ve skriptu style.php. Takže teď se nám načítá stránka a ošetřili jsme prázdnost proměnné style. Dále musíme mít v hlavičce stránky značku pro vložení stylu, kde odkaz bude obsahovat i proměnnou pro style.php.

...
<link type="text/css" rel="stylesheet" href="style.php?style=<? print $style; ?>" media="screen" />
...

Nyní se pojďme podívat, co se děje v skriptu style.php. Když proměnná style obsahuje správnou hodnotu. Řekněme, že proměnná style má hodnotu oranzova a tak nám skript style.php může třeba takto vrátit styl oranzova.css :

<?php
switch($_GET['style']) {
case "oranzova": header("Location: oranzova.css"); break;
case "default": header("Location: default.css"); break;
default: header("Location: default.css"); break;
}
?>

A pokud bude mít proměnná style neznámou hodnotu, bude vrácen styl default.css. No a konečně máme načten styl a stránky se mohou vesele měnit:)

POZNÁMKA: Jedna z příčin nefunkčnosti může být to, že server má nastavené register_globals na on. V tom případě místo $GET['style'] používáme $style.


Autor: timbulko
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel deset a sedm