Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les tutoriels > Non-Officiels > Site Web > PHP > Points particuliers > Lecture du tutoriel

Le sélecteur de style CSS de Chris Clark

Avatar
Auteur : rainbowspiky
Créé : le 08/12/2006 20:11:36
Modifié : le 04/02/2008 22:04:21
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Bonjour à toutes et à tous.

Je propose ici un tutoriel dans lequel vous apprendrez à mettre en place un "style-switcher" sur votre site.
Je ne l'ai pas conçu moi-même, il s'agit du sélecteur de style proposé par Chris Clark dans l'article anglophone "Build a PHP Switcher" (13 octobre 2002).
L'avantage de ce tuto, c'est qu'il explique ce style-switcher en français. ^^ Il n'est pas une traduction de l'article.

Pour rappel, les feuilles de styles alternatives sont officiellement un dispositif d'accessibilité. En proposant plusieurs styles différents aux visiteurs, on leur permet de personnaliser leur expérience de navigation (c'est-à-dire ce qu'ils ressentent), et ainsi de la faciliter, de la rendre plus agréable.


J'explique tous les codes. Les personnes qui ne connaissent rien au PHP pourront donc tout de même comprendre un peu.
Je conseille néanmoins très fortement d'avoir des bases dans ce langage de script, notamment à propos des variables.
La lecture des explications n'est pas forcément nécessaire pour comprendre la manière de mettre en place le sélecteur sur votre site, mais je ne supporte pas de voir des lignes de code sans savoir "comment elles marchent".

Je prends ici l'exemple d'un site (www.mon-site.net) ayant toutes ses feuilles de style hébergées à la racine, avec la syntaxe de nom suivante : nomdustyle.css.

Je m'appelle Mathias Poujol-Rost et publie ce tutoriel sous la licence Creative Commons BY-NC.
Sommaire du chapitre :

La création ou modification du cookie

Ce sélecteur se base sur un cookie qui stocke le choix de style. Cela signifie que ce sélecteur ne peut pas fonctionner chez les internautes qui refusent les cookies. C'est l'un des rares inconvénients de ce sélecteur (un autre étant qu'il requiert un hébergement avec le PHP activé).

Nous allons voir dans cette sous-partie le code du fichier qui crée ce cookie ou qui le modifie pour "écraser" un choix précédent de style. Ce code est l'unique contenu de ce fichier selecteur-style.php hébergé à la racine du site.


Notes d'information



Si le navigateur de l'internaute refuse les cookies, le sélecteur ne fonctionne pas. Des petits malins se disent peut-être :
"Oui, mais c'est pas grave, il suffit d'activer les cookies quelques secondes, de choisir son style pour créer le cookie et ensuite de désactiver les cookies pour ne plus être embêté. :p "
Ils ont tort. Si les cookies sont désactivés, ce n'est pas seulement leur création ou modification qui est bloquée, mais aussi leur lecture. >_<


Dans un but de transparence avec son lectorat, il est conseillé d'informer l'internaute sur les cookies du site.
  • Dire s'il y en a ou pas, et combien.
  • Dire si ceux-ci collectent des informations sur les visiteurs, et énumérer lesquelles (informations) si tel est le cas.
  • Donner un nom explicite aux cookies, par exemple SousdomaineNomDomaine_NomDuCookie.
  • Indiquer la durée de vie et/ou la date d'expiration de chaque cookie.



Le code du fichier selecteur-style.php



Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
if (isset($_POST['nouveau']) AND $_POST['nouveau'] != NULL)
        {$nouveau = $_POST['nouveau'];} 
elseif (isset($_GET['nouveau']) AND $_GET['nouveau'] != NULL)
        {$nouveau = $_GET['nouveau'];}
 
setcookie ('sousdomainenomdomaine_stylecss', //nom du cookie
$nouveau, //valeur du cookie
time() + 31536000, //durée de vie (31 536 000 secondes = une année)
'/', //répertoire de validité par rapport à la racine
'sousdomaine.nom.domaine', //nom de domaine COMPLET dont sous-domaine
'0'); // 0 = pas sécurisé 
 
header ("Location: ".$_SERVER['HTTP_REFERER']);  // retour à la page précédente
?>

Ce code comporte deux instructions PHP : setcookie et header. Chacune se termine par un point virgule.

Elles sont précédées de deux conditions. Si vous ne savez pas ce qu'est une structure conditionnelle en PHP, cela ne servirait pas à grand-chose que je vous explique ces quatre lignes, en l'état actuel de vos connaissances en PHP et de la lecture de ce tuto. En effet, ces deux conditions sont directement en lien avec la troisième sous-partie de ce tutoriel.

Ne modifiez pas ces 4 lignes de conditions, sous peine de ne pas voir votre style-switcher fonctionner du tout. Pour ne pas vous laisser sur votre faim d'explications, je vous indique juste que ces 4 lignes permettent de récupérer le choix du style.


Explications du code du fichier selecteur-style.php



L'instruction setcookie contient 6 arguments qui déterminent les conditions de validité du cookie.
Il ne faut en aucun cas changer l'ordre des arguments dans ces lignes de code. La structure est la même pour tous les cookies.


L'instruction header ("Location: ".$_SERVER['HTTP_REFERER']); indique qu'une fois le formulaire envoyé vers le fichier selecteur-style.php, celui-ci traite les informations qu'il a reçues (le nom du style via la variable $nouveau), puis effectue une redirection vers la page depuis laquelle a été envoyé le choix du style. En fait, l'internaute ne verra pas cette page selecteur-style.php, elle sert uniquement à écrire le cookie.
La variable surperglobale $_SERVER['HTTP_REFERER'],
tout comme son ancêtre $HTTP_REFERER n'a pas
forcément de valeur. (En fait, c'est le navigateur
qui éventuellement en donne une.)


Pour pallier ce problème, une solution simple existe : créer sur votre site une page dédiée au changement de style, à l'instar du Site du Zéro.
Il suffit d'inclure le code de selecteur-style.php dans une page page-de-changement-de-style.php avant le moindre code XHTML, en ayant remplacé
header ("Location: ".$_SERVER['HTTP_REFERER']);
par
header ("Location: http://www.mon-site.net/page-de-changement-de-style.php");.


Conclusion de cette première sous-partie



Voici le code pour la création d'un cookie qui durera un an, sans les commentaires (c'est plus lisible).
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php 
if (isset($_POST['nouveau']) AND $_POST['nouveau'] != NULL)
        {$nouveau = $_POST['nouveau'];} 
elseif (isset($_GET['nouveau']) AND $_GET['nouveau'] != NULL)
        {$nouveau = $_GET['nouveau'];}
 
setcookie ('sousdomainenomdomaine_stylecss', $nouveau, time() + 31536000, '/', 'sousdomaine.nom.domaine', '0'); 
 
header("Location: ".$_SERVER['HTTP_REFERER']); 
?>
ou : Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php 
if (isset($_POST['nouveau']) AND $_POST['nouveau'] != NULL)
        {$nouveau = $_POST['nouveau'];}
elseif (isset($_GET['nouveau']) AND $_GET['nouveau'] != NULL)
        {$nouveau = $_GET['nouveau'];}
 
setcookie ('sousdomainenomdomaine_stylecss', $nouveau, time() + 31536000, '/', 'sousdomaine.nom.domaine', '0'); 
 
header("Location: http://www.mon-site.net/page-de-changement-de-style.php"); 
?>
(Entre ces deux codes, seule la dernière ligne varie.)

Vous venez de créer un cookie. Soit. Mais dans l'absolu, cela ne sert à rien. :euh: Nous allons voir comment exploiter ce cookie.

L'appel de la feuille de style choisie

Poursuivons avec la ligne de code XHTML qui fait le lien vers la feuille de style.


L'ancienne ligne de code XHTML



Code : HTML
1
<link href="http://www.mon-site.net/nomdustyle.css" rel="stylesheet" type="text/css" media="screen" title="le style que j'ai choisi" />



Comment lire le choix stocké dans le cookie ? Code PHP



Nous remplaçons juste nomdustyle du nom de fichier CSS "entier" nomdustyle.css par un code PHP.

Ainsi, la portion de code XHTML nomdustyle.css devient :
Code : PHP
1
<?php echo (!$sousdomainenomdomaine_stylecss)?'valeur-par-defaut':$sousdomainenomdomaine_stylecss ?>



Explication du code PHP






Conclusion de cette deuxième sous-partie : la nouvelle ligne de code



Voici le code XHTML en entier, pour la partie <head> de vos pages : Code : HTML
1
<link href="http://www.mon-site.net/<?php echo (!$sousdomainenomdomaine_stylecss)?'valeur-par-defaut':$sousdomainenomdomaine_stylecss ?>.css" rel="stylesheet" type="text/css" media="screen" title="mon choix" />


Nous voici arrivés presque à la fin de ce tuto.

Si vous avez tout compris jusqu'à maintenant, c'est très bien :D et vous allez pouvoir laisser en partie reposer vos cerveaux, la partie suivante (la troisième) est la dernière et la plus facile ! Vous y découvrirez comment permettre aux visiteurs de choisir leur style.

Dans le cas contraire :( , la première chose serait de vous plonger sérieusement dans un cours de PHP. En ayant des bases, vous comprendrez plus facilement, plus vite et mieux.

La sélection du style

Nous allons tout de suite nous placer du côté de l'internaute et voir comment changer le style CSS depuis une page Web.
Il y a deux méthodes : le formulaire et les liens.


Méthode A : le menu déroulant



Le code pour la liste déroulante



Code : HTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<form method="post" action="http://www.mon-site.net/selecteur-style.php">
<p>
<label for="selectiondustyle">Choisissez le style qui vous plaît et appuyez sur le bouton : </label> 
     <select name="nouveau" id="selectiondustyle">
          <option value="defaut">style normal (par défaut)</option>
          <option value="gros-caracteres">gros caractères</option>
          <option value="fond-noir">fond noir (fort contraste)</option>
          <option value="impressions">aperçu avant impression</option>
          <option value="mobile">version petits écrans</option>
     </select>
<input type="submit" value="Choisir ce style" title="valider le choix de style" />
</p>
</form>


Explications du code du formulaire



Ce code ne convient pas aux développeurs(euses) qui ont choisi d'avoir une page pour le changement de style sur leur site (donc, sans utiliser header("Location: ".$_SERVER['HTTP_REFERER']); ).
Ces personnes doivent remplacer dans le code précédent
action="http://www.mon-site.net/selecteur-style.php"
par
action="http://www.mon-site.net/votre-page-de-changement-de-style.php".


Méthode B : les liens



La ligne du code-type



<a href="http://www.mon-site.net/selecteur-style.php?nouveau=valeur">Choisir le style "valeur"</a>

Explications du code des liens


Exemple : [ Choix du style visuel : normal (par défaut) | gros caractères | fond noir (fort contraste) ].

Vous pouvez bien sûr mettre une image à la place du texte du lien. Cette méthode est particulièrement adaptée à un faible nombre de styles CSS différents. Si vous en avez plus que cela, il peut être intéressant de proposer le choix du style via une liste déroulante, car une suite de liens comme celle qui précède peut être "encombrante", "lourde" dans la page.


Conclusion de cette troisième sous-partie



Voici les codes en entier, pour la partie <body> de vos pages :

Méthode du formulaire



Code : HTML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<form method="post" action="http://www.mon-site.net/selecteur-style.php">
<p>
<label for="selectiondustyle">Choisissez le style qui vous plaît et appuyez sur le bouton : </label> 
     <select name="nouveau" id="selectiondustyle">
          <option value="defaut">style normal (par défaut)</option>
          <option value="gros-caracteres">gros caractères</option>
          <option value="fond-noir">fond noir (fort contraste)</option>
          <option value="impressions">aperçu avant impression</option>
          <option value="mobile">version petits écrans</option>
     </select>
<input type="submit" value="Choisir ce style" title="valider le choix de style" />
</p>
</form>


Méthode des liens



Code : HTML
1
<a href="http://www.mon-site.net/selecteur-style.php?nouveau=valeur">Choisir le style "valeur"</a>

Annexe : quelques liens utiles

Liens du Site Du Zér0






Quelques autres sélecteurs de style



En Javascript :



En PHP :





Autre lien




Q.C.M.

S'il y a des erreurs dans le code suivant, combien y en a-t-il ? (Les lignes sautées entre les conditions et les instructions ne sont pas des erreurs, juste utiles pour la lisibilité du code.)Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php
if (isset($_POST['nouveau']) AND $_POST['nouveau'] != NULL)
        {$nouveau = $_POST['nouveau'];}
elseif (isset($_GET['nouveau']) AND $_GET['nouveau'] != NULL)
        {$nouveau = $_GET['nouveau'];}
 
setcookie ('sous domaine stylecss', $nouveau, time() + 31536000, '/francais/', 'sousdomaine.nom.domaine/english/'); 
 
header("Location: ".$_SERVER['HTTP_REFERER']); // retour à la page précédente
?>
Dans le cadre de ce sélecteur de style, avec quels langages informatiques se fait le lien depuis toutes les pages vers la feuille de style sélectionnée ?
Voici cinq codes pour changer de style avec la méthode des liens. Lequel est correct ?


Vous voilà enfin arrivé à la fin de ce tuto, j'espère ne pas avoir été trop long et surtout suffisamment clair.

Bon codage CSS !

A bientôt les Zéros.
Auteur : rainbowspiky
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 335 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1614s (0.1466s)