Aller au contenu

PHP-CSS


Guest vchahun

Sujets conseillés

Guest vchahun
Posté

J'ai un problème existentiel dans mon système de feuilles de styles: je veux que le choix de l'utilisateur soit permanent (grâce à un cookie).

Voila le code que je pensais utiliser:

<html><head>[...]
<link rel="alternate stylesheet" type="text/css" href="style.php?css=fixed" title="Fixed" />
<link rel="alternate stylesheet" type="text/css" href="style.php?css=lynx" title="Lynx" />
<link rel="alternate stylesheet" type="text/css" href="/style.php?css=orange" title="Orange" />
link rel="stylesheet" type="text/css" href="style/style.php" title="Feuille de style actuelle" />

avec pour code PHP:

<?php
Header("Content-type:text/css");
if(isset($_GET['css'])) {$css=$_GET['css']; SetCookie("phpcss",$css,time()+630720000)}
elseif(isset($_COOKIE['phpcss'])) $css=$_COOKIE['phpcss'];
else $css="orange";
echo "@import url($css.css);\n";
?>

Or, quand j'inclue dans ma page les feuilles de styles alternatives, le navigateur charge en mémoire les CSS résultant et modifie les cookie 3 fois:

style.php?css=fixed => SetCookie("phpcss","fixed",time()+630720000)

style.php?css=lynx => SetCookie("phpcss","lynx",time()+630720000)

style.php?css=orange => SetCookie("phpcss","orange",time()+630720000)

Au final, le cookie a donc toujours pour valeur "orange". Si l'utlisateur change de feuille de style et visite une autre page, la feuille de style sélectionnée ne sera pas réutilisée, car le cookie prend une valeur "orange" avant que soit inclue la feuille de style.

Conclusion: quelqu'un aurait-il une proposition ou une alternative ??

PS: je sais que c'est pas facile à comprendre, posez-moi des questions ...

Posté

Salut vchahun,

Ce n'est pas un problème de code, mais simplement un problème de logique.

Comme tu le dis toi-même, le navigateur charge les 3 feuilles de style et change le cookie à chaque fois.

Je pense que tu devrais mettre du code php autour de tes balises <link rel...> pour éviter de les charger toutes les trois.

Par exemple:

if($_COOKIE['phpcss'])
   print "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.php?css=".$_COOKIE['phpcss']."\" />";
else
 // la feuille de style par défaut

Dan

Guest vchahun
Posté

Oui, mais comment fait alors le visiteur pour changer la feuille de style ?

Je vais finir pas opter vers la solution "JS stylesheet switcher" ...

Posté

Si tu veux j'ai fait un petit tuto rapide de style switcher PHP.

Il ne doit pas être totalement complet et bourrés de fautes, mais tu as déjà le principe.

http://www.elmoustikoblog.net/tutoriels/php/style_switcher/

Il va peut etre deconné, je l'ai repris sur un de mes sites mais le modifiant en "direct live" sans tester, mais a prori ca le fait.

Sinon la solution JS est tout à fait envisageable, mais la gestion des cookies avec JS est vraiment chiatique je trouve.

@++

Guest vchahun
Posté

Je disais Javascript parce que les <select> qui servent de lien sont très utilisés ... [mais bien sur j'éviterai .....]

Posté

bah, pour prendre par exemple le style 1, tu le fais aller sur une page comme ça :

<?php

$css = "1";

session_start();

session_register("css");

?>

et apres, tu fais dans l'autre sens ..

je vois pas de probleme ...

Guest vchahun
Posté

Il n'y a pas de problème pour ta solution, mais je voulais lui permettre de ne pas changer de page et de changer la feuille de style au moyen d'un "stylesheet-switcher", c'est à dire en restant sur la page, mais de toute façon IE n'en dipose pas ...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...