W tym krótkim artykule opiszę, jak w prosty sposób możemy zrobić sobie na stronie zmianę wyglądu za pomocą dynamicznie ładowanych arkuszy stylu. Najpierw musimy mieć oczywiście stronę (najlepiej zgodną , w Xhtmlu , ale zwykły 4.01 też może być ;) ). Wygląd strony definiujemy przez arkusze stylów CSS zagnieżdżone jest w sekcji <head> .Wyglądać może to tak :
Kod:
<head>
<meta name="author" content="sumik" />
<!-- inne meta tagi -->
<link rel="stylesheet" type="text/css" href="styl.css" />
</head>
Ale to już chyba wiemy. Oczywiście arkusz mamy przygotowany. Teraz możemy sobie przygotować ich jeszcze dowolną ilość , zależy to od naszej fantazji i chęci. Teraz : jak zrobić, aby użytkownik mógł sobie wybrać ulubiony , i był on zapamiętany dla niego ? Więc będzie nam potrzebna obsługa cookies u użytkownika oraz php na naszym koncie www. Dobra, przejdźmy do czynów. Do sprawnego działania takiego mechanizmu będą nam potrzebne 3 skrypty w php.Jeden przed sekcją <head>, a konkretniej wogóle przed całym nagłówkiem http, inaczej nie będzie działać ;p.
Kod:
<?php
## PLIK ODPOWIADAJąCY ZA ZMIANĘ STYLU NA STRONIE
## ZMIANA WATOśCI ARKUSZA W COOKIE
if (isset($_POST[styl]))
{
$blad="Do poprawnego dzialania zmiany stylu potrzebna
jest obsługa cookies.";
switch($_POST[styl])
{
case "styl2" :
{
if (!setcookie("style","syle2",time()+3600*365))
{
echo("$blad");
}
else
{
echo("<script>document.location.href=\"index.php\";
<script/>");
};
break; };
case "styl3" :
{
if (!setcookie("style","styl3",time()+3600*365))
{
echo("$blad");
}
else
{
echo("<script>document.location.href=\"index.php\";
<script/>");
};
break; };
default : {
if (!setcookie("style","styl1",time()+3600*365))
{
echo("$blad");
};
};
}
};
?>
Dobra, wyjaśniam. Samodzielnie ten skrypt nie zadziala za wiele, tj nie zmieni nam stylu. Jest jedynie odpowiedzialny za wysłanie cookie z wartością odpowiającą poszczególnemu arkuszowi stylu. Na początku mamy instrukcję if (isset($_POST[styl])), a w niej switch dla możliwych wartości. Jeśli ją pominiemy ( a można by to zrobić, i skrypt by zadziałał po połączeniu z resztą kodu, jaki zaraz podam) , to po każdym odświeżeniu będzie się i tak ładował styl styl1 . Nazwa zmiennej $_POST[styl] wynika z nazwy elementu <select>, który będzie częścią formularza wybierającego styl. Jeśli nie rozumiesz działania cookies i formularzy w php, to najpierw o tym poczytaj w jakimś kursie php, ponieważ nie widzę sensu tego tłumaczyć, a jeśli olejesz moją sugestię i tylko przepiszesz kod, to gówno się nauczysz. Dobra, więc to jak narazie jest oczywiste. Teraz drugi skrypt, jaki musimy umieścić już w sekcji <head> .Zaprezentuję od razu pełen przykład.
Kod:
<?php
### WYPROWADZENIE LINKA DO ARKUSZA STYLU
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
switch($HTTP_COOKIE_VARS[style])
{
case "styl1" : { print "styl1.css\" />\n"; break; };
case "styl2" : { print "styl2.css\" />\n"; break; };
case "styl3" : { print "styl3.css\" />\n"; break; };
default : { print "styl1.css\" />\n"; };
}
## KONIEC SWITCHA
?>
Wyjaśniam dalej (na wypadek , gdyby ktoś nie rozumiał).Ten oto wyżej zapodany kod powinien się znaleźć zamiast kodu html : <link rel="stylesheet" type="text/css" href="styl1.css" /> Możemy se go wpisać w dokument lub w tym miejscu go po prostu zaincludować, jak komu wygodniej. To jest główny mechanizm działania, reszta to tylko uławienia w celu podwyższenia wygodnictwa. Prawda, że prosty ? Działa tak, że ładuje styl, którego nazwę znajdzie w cookie. Jeśli takowego cookie nie ma (ktoś se nie życzy dostawać cookies na tej stronie), to nie pozostanie bez stylu, lecz domyślnie otrzyma styl1.
Tak, to już w zasadzie główna część całego bajeru. Teraz pozostał nam już tylko formularz , który będzie służył do zabawy w zmianę stylu. Przejdźmy do czynów, oto kod (niestety najdłuższy z wszystkich ;p):
Kod:
<form action="index.php" method="POST">
<select name="styl">
<?php
## dynamicznie generowany formularz
switch($HTTP_COOKIE_VARS[style])
{
case "styl2" : {
echo("<option value=\"styl2\" selected=\"selected\"
name=\"styl2\">[Styl nr2]</option>");
echo("<option value=\"styl1\" name=\"styl1\">
[Styl nr1]</option>");
echo("<option value=\"styl3\" name=\"styl3\">
[Styl nr3]</option>");
break; };
case "styl3" : {
echo("<option value=\"styl3\" selected=\"selected\"
name=\"styl3\">[Styl3]");
echo("<option value=\"styl1\" name=\"styl1\">
[Styl nr1]</option>");
echo("<option value=\"styl2\" name=\"styl2\">
[Styl nr2]</option>");
break; };
default : {
echo("<option value=\"styl1\" selected=\"selected\"
name=\"styl1\"> [Styl nr1]</option>");
echo("<option value=\"styl2\" name=\"styl2\">
[Styl nr2]</option>");
echo("<option value=\"syl3\" name=\"styl3\">
[Styl nr3]</option>");
};
## POWINNO ZADZIAŁAĆ ...
## KONIEC SWITCHA
}
?>
</select>
<input type="submit" name="dawaj_wasil" value="Zmień" />
</form>
Dlaczego wypuszczam ten formularz ( a przynamniej sporą jego część) przez echo, zamiast go napisać po prostu w htmlu? Ano, żeby zaznaczał w naszym formularzu w liście rozwijalnej, z jakiego obecnie stylu korzystamy. Oto tyle zachodu... Paradoks, co :> ? Na tym właśnie oświadczam,iż zanosi się na koniec artykułu o dynamicznych arkuszach css. Efekt podziwiać możesz również na tej stronie (dstrctr_teamu), jeśli działają cookie , masz normalną przeglądarkę, a ta strona jeszcze żyje :D . No to tyle, miłej zabawy. Mam nadzieję, że napisałem to w miarę zrozumiale i że ktoś się mógł czegoś nauczyć.