http://hulan.cz/blog/item/alternativni-css-styly-a-jejich-prepinani-lepe-objektove
Chápete to?
Já ne (asi proto, že neumim PHP ani JS), ale přijde mi to jako nejlepší a nejjednodušší způsob. Akorát bych potřebovala vědět, jak to použít.
Možná je ještě jednodušší pro začátek neřešit tu třídu, ale já nechápu ani tohle
http://hulan.cz/blog/item/alternativni-css-styly-lepe-prepinac-css-stylu-php-skript-na-strane-serveru
<moje domněnka>
Prostě do head dám:
<script type='text/javascript' src='http://mojestranky/moje_styly/base/script.js'></script> (nechápu, jestli ta cesta musí bejt tak dlouhá, nebo jestli můžu vypustit to "base" - ale to je asi ten základní styl, ne?)
a pak do těla někam tenhle formulář
<form id='CSSSwitch' method='post' action='http://demo.blogcms.com/'>
<fieldset><legend>Skin</legend><select name='CSSVOLBA'>
<option value='extreme' id='opt0'>eXtreme Styles</option>
<option value='styl1' id='opt1'>modrej</option>
<option value='styl2' selected='selected' id='opt2'>zelenej</option>
<option value='styl3' id='opt3'>žlutej</option>
<option value='styl4' id='opt4'>filajovej</option>
</select>
<input name='submitcss' type='image' src='http://mojestranky/moje_styly/base/nejaky_tlacitko.gif' alt='Změnit styl' title='Změnit styl'/>
</fieldset>
</form>
</moje domněnka>
A to je všecko? To asi né, co... A jde to i nějak bez toho formuláře? Jenom pomocí odkazů? Prostě bych potřebovala návod pro blbce...
Kdysi jsem tohle řešil, a imho je nejjednoduší použít cookies
Prostě někam dáš
<a href="prepinac_stylu.php?styl=1">Výchozí styl</a>
<a href="prepinac_stylu.php?styl=2">Druhý styl</a>
A pak prepinac_stylu.php:
<?php
if($_GET['styl']==1) setcookie('styl','1',time()+3600,'/');
if($_GET['styl']==2) setcookie('styl','2',time()+3600,'/');
if($_GET['styl']!=1 && $_GET['styl']!=2) setcookie('styl','1',time()+3600,'/');
?>
Pak ještě musíš podle tý cookie poslat správné CSS. Buď změnou <link...> (pak ten script musíš mít v každé stránce) nebo použít <link href="styl.php"...>. V něm pak pošleš podle cookie CSS.
Doufám, že je to pochopitelný :-)
time()+3600 je na jednu hodinu. Doporučuju spíš něco jako time()+(3600*24*365)
milster: To je jenom detail :)
No, aby sem za hodinu nepsala, že to najednou přestalo fungovat :) Takhle sem napíše až za rok.
To nehrozí, já to zatim ještě nepochopila, takže sem napíšu fakt za rok... že to nechápu :)
No a máme tu nový rok, tak jsem zase tady a povidám: hele, já to nechápu :)
Nahrála jsem soubor prepinac_stylu.php a udělala si v menu odkazy, ale nechápu, co mám napsat do head.
Teď tam mám tohle:
<link rel="stylesheet" type="text/css" href="style.css" />, to mi určuje výchozí styl, ne?
A jak mám napsat ty ostatní?
Jo, a jak prohlížeč pozná, že odkazem <a href="prepinac_stylu.php?styl=1">Dejme tomu Fotoalbum</a> je míněn soubor style.css?
<head>
blabla
<?php
if($_COOKIE['styl']==1) echo '<link rel="stylesheet" type="text/css" href="style.css" />';
if($_COOKIE['styl']==2) echo '<link rel="stylesheet" type="text/css" href="style2.css" />';
?>
</head>
A to nemusim nikde v tom prepinac_stylu.php definovat, že dejme tomu styl výchozí se jmenuje nějak... atd?
cely to funguje na zaklade cookies. prepinac stylu se tim deli na dve casti. jedna cast ulozi cookie na uzivateluv pc. v tom cookie je identifikace nastavenyho stylu. druha cast pak pri zpracovavani stranky pehapkem nacte z prohlizecem odeslaneho cookie identifikaci stylu a podle toho pripoji dany styl - napr zapisem tagu style do head. jo a pak jeste je teda cast s vyberem stylu, to je seznam stylu s tema odkazama nebo formularem, ale to je prakticky jenom html (i kdyz se da pouzit php na vygenerovani, aby se to nemuselo psat furt dokola rucne).
mozna se zkus podivat jeste jak to dela a popisuje pixy, treba to lepsi pochopis ten princip: http://www.pixy.cz/pixylophone/2003_11_archiv.html#1068200165
No, hlavně když napíšu do souboru.htm
<head>
blabla
<?php
if($_COOKIE['styl']==1) echo '<link rel="stylesheet" type="text/css" href="style.css" />';
if($_COOKIE['styl']==2) echo '<link rel="stylesheet" type="text/css" href="style2.css" />';
?>
</head>
tak to je asi blbost, to bych měla změnit příponu na php, ne?
Jenomže já ten htm soubor includuju do indexu.php. Jde includovat do jednoho souboru další soubor php?
No, jenomže nic naplat, ani když to udělám, nefunguje to. Já tam teda mám zatim jenom jeden styl, ale když si na kliknu na ten odkaz
<a href="prepinac_stylu.php?styl=1">Výchozí styl</a>, tak se mi objeví prázdná stránka :(
Nemám do toho dokazu dát jméno toho souboru css?
Jasně že se ti objeví prázdná stránka.
Do toho souboru prepinac_stylu.php přidej
header('location: '.$_SERVER['HTTP_REFERER']);
To tě přesměruje na stránku, ze které jsi klikla na ten odkaz.
Předtím ten skript jenom uložil cookie, ale jinak neměl žádnej výstup.
Dík, už to jde, ale když kliknu na ten jinej styl, tak nic, načte se zase ten starej ...
Mám to zapsaný v head takhle:
if($_COOKIE['styl']==2) echo '<link rel="stylesheet" type="text/css" href="http://cecilie.wz.cz/calouneni/style2.css" />';
Nebo tomu vadí, že je ten styl v podadresáři?
mas tam tech linku na styly v te hlavicce nejak moc... zkus ten posledni vyhodit
Přesně tak.
<link rel="stylesheet" type="text/css" href="style.css" title="fotoalbum" /> - Tohle teď můžeš (resp. musíš) smáznout.
Hm, super, už to de, ale bohužel to nějak fachčí divně, např. teď se na tu stránku vůbec nedostanu. Prostě ani když zadám růčo adresu, prohlížeč nereaguje :-/ Nehledě na to, že se mi to celý rozhodilo... :)
No, jde vám to někomu? Já jsem z toho jelen...
Validátor mi řiká tohle
500 Can't connect to cecilie.wz.cz:80 (connect: timeout)
A to samý mozilla...
Ehm, já se pídím a dopídila jsem se, že podle tohodle (ačkoliv nevím, co to je) http://www.squish.net/dnscheck/, je tahle adresa v pořádku, ale chyba je na zeus.webzdarma.cz, což zas nevim, jak se mnou jako souvisí... No, zajímavý...
co ja vim tak zeus.webzdarma.cz je jmeno webzdarmiho serveru
a byl vypadek, proto ti to neslo
viz http://www.webzdarma.cz/forum/read.php?f=6&i=29848&t=29848
No, to byl určitě, jelikož jsem to přetížila :)))
Laura: Aby se načetlo výchozí CSS, když není poslaná cookie, tak tam dej
if(!$_COOKIE['styl']) echo '<link rel="stylesheet" type="text/css" href="vychozi.css" />
No, vidiš to, zrovna se na to jdu zeptat :) Už je to opravené.