PHP: strefaphp.net
PHP: strefaphp.net



 
Czy odwiedziłeś już te strony? -
dodał: Vengeance

Opis artykułu dodano: 05-09-2004 14:56
Krótki artykuł prezentujący, jak za pomocą php stworzyć na swje stronie www możliwość wyboru ulubionego arkusza stylu css, co pozwala na proste przełączanie całego wyglądu.
dodał: DSTRCTR | autor: Sumik | czytano: 10158 razy

Inne materiały do artykułu

Dynamiczne arkusze stylu css
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ć.
PHP: strefaphp.net
wyślij email informacje forum download skrypty katalog kursy porady artykuły home współpraca reklama kontakt