Na rôznych diskusných fórach k PHP sa často objavuje dotaz na to, ako docieliť zmenu vzhľadu stránky po kliknutí na odkaz. Je to pomerne jednoduché, a tak vám to v krátkosti predvediem.
Treba si uvedomiť, že vzhľad stránky je tvorený pomocou CSS súboru, a teda náš skript má za úlohu docieliť len zmenu linku na .css súbor. Preto si treba pripomenúť, že pokiaľ chcete meniť vzhľad celej stránky, musí byť celá štýlovaná v CSS a všetky štýly musia byť robené na jedno HTML (čí XHTML) telo stránky.
Predstavme si názorovú situáciu. Ako hlavnú stránku webu máme napríklad main.php a k nej máme napísaných pár CSS súborov predstavujúcich zelený, modrý a kvetinkový dizajn: style-zeleny.css style-modry.css a style-hippies.css. Pre naše účely vytvoríme k týmto štyrom ešte jeden dokument load_style.php, ktorého úlohou bude uložiť do cookies hodnotu predstavujúcu daný dizajn.
Vo vašom menu na stránke, kde máte odkazy, si pripojíte odkazy na štýly v takomto tvare:
<a href="load_style.php?style=zelene_ako_trawicka" >Zelený štýl</a>
<a href="load_style.php?style=modre_nebo" >Modrý štýl</a>
<a href="load_style.php?style=hippies_rulez" >Kvetinkový štýl</a>
//pravdaže hodnoty premennej style si nadefinujte ako vám to vyhovuje ;)
Teraz po kliknutí na odkaz cestuje naša premenná style k súboru load_style.php, ktorý by ju mal spracovať veľmi jednoduchým spôsobom, a to uložiť jej hodnotu do cookies užívateľa. Názorný kratučký príklad, pre vás špeciálne s komentárom:
Poslednou časťou príkladu by, ako ste sa iste dovtípili aj sami, malo byť načítavanie cesty k CSS súboru pomocou načítania hodnoty z cookies. Nasledujúci príklad by ste mali umiestniť do main.php medzi tagy <head> a </head> namiesto linku k CSS súboru. Myslím, že všetko potrebné k vysvetleniu skriptíku nájdete v komentároch, ktoré tam pripíšem:
";
//a samotný vygenerovaný html tag pre načítanie zvoleného dizajnu ;)
?>
Tak to by bolo všetko ohľadne „meniča css štýlov“.
Doposiaľ som videl veľa rôznych style switcherov, no obvykle bývajú jeden ako druhý a líšia sa len minimálne. Ak ste náhodou niečo podobné potrebovali, dúfam, že so vám pomohol. Všetky otázky, ale aj prípadné pripomienky v diskusii pod článkom ;).