Voir aussi
Dans la même rubrique :
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Page contact en PHP 2/3
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBB
Page Erreur 404 en PHPDu même auteur :
Reprendre un document Word
Les Centres de santé
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Accueil du nouveau rédacteur
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Menu de navigation sans JavaScript
Exécuter un Javascript dans une page SPIP
Astuce pour les images fréquemment utilisées
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Gestion d’une rubrique... en attendant SPIP
Page Erreur 404 en PHP
Contrôler l’accès d’une partie du site avec .htaccess
Créer une liste de QCM
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Créer un forum à l’aide de phpBB
Webmasters : Comment mieux se référencer ?
Un lecteur RSS pour votre site 1/2
Etablir un questionnaire statistique en ligne
Analyser les réponses à une liste de questions
Initiation au xhtml - 1
Editer plusieurs fichiers de syndication 1/3
Le web structuré et sa présentation
Page contact en PHP 2/3
Quiz en PHP 2/3
Conseils pour débuter un site web
Proposer plusieurs styles pour votre site
Soigner en ligne, un art impossible ?
Un lecteur RSS pour votre site 2/2
Editer plusieurs fichiers de syndication 3/3
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Syndication, comment s’y retrouver
Belles icônes pas chères !
Quand JavaScript est désactivé... 1/2
Un Editeur RSS pour votre site 2/2
Quiz en PHP 3/3
Utilisation de la classe easyRSS
Réaliser un formulaire de contact (3/4)
Javascript : n’oubliez pas Mac OS !
xhtml - 4 : Les entités
Page contact en PHP 3/3
Comment intégrer Snap Shots à Rapidweaver ?
Réaliser un formulaire de contact (4/4)
Page contact en PHP 1/3
Tri et Histogramme
Quiz en PHP 1/3
Comment faire migrer son site ?
Réaliser un formulaire de contact (5/4)
Installer un script PHP pour les nuls
Quand JavaScript est désactivé... 2/2
Réaliser un formulaire de contact (2/4)
Un serveur dédié pour les nuls
Positionnement fixe... même avec Internet Explorer !
Un Editeur RSS pour votre site 1/2
Réaliser un formulaire de contact (1/4)
Menu dépliant pour les rubriques
Publication Spip : forme et typographie
Initiation au xhtml - 2
La Netiquette des forums
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Editer plusieurs fichiers de syndication 2/3
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Quand JavaScript est désactivé... 2/2
Quiz en PHP 3/3
Syndication, comment s’y retrouver
Editer plusieurs fichiers de syndication 3/3
Page Erreur 404 en PHP
Page contact en PHP 1/3
Page contact en PHP 2/3
Proposer plusieurs styles pour votre site
Editer plusieurs fichiers de syndication 1/3
Quand JavaScript est désactivé... 1/2
Quiz en PHP 2/3
Gestion d’une rubrique... en attendant SPIP
Menu dépliant pour les rubriques
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Quiz en PHP 1/3
Editer plusieurs fichiers de syndication 2/3
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 1/3
Astuce pour les images fréquemment utilisées
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Joindre un logo à un article
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Menu de navigation sans JavaScript
Cette navigation sans JavaScript par menus déroulants s’affiche d’emblée si un ancien navigateur est détecté (comme Microsoft Internet Explorer 4 ou Netscape 4). Pour cela, au chaque page du site contient :
if(!isset($_COOKIE["navigateur"])) { include("/navigateurs.php"); }
Explication : si on ne retrouve pas la variable "navigateur" inscrite dans un cookie, on charge le script "navigateurs.php". Ce script contient :
<?php |
Les informations sur le navigateur utilisé sont récupérées par $HTTP_USER_AGENT [1]. Ce script repère le navigateur utilisé et le classe en "vieux" ou "ns4" [2] (anciens navigateurs non conformes CSS 2) ou "recent". Ce classement est mémorisé dans un cookie ce qui évide de recommencer à chaque chargement de page [3].
Pour afficher le menu de navigation adapté au navigateur, chaque page du site contient le script :
<?php if ($navigateur == 'recent') { include("menu.php"); } |
Evidemment, "menu.php" contient le menu de navigation nécessitant CSS 2 et JavaScript, "menu2.php" permet d’afficher les menus déroulants fonctionnant sans JavaScript.
J’ai également voulu faire un déclenchement manuel de ce menu de navigation destiné aux visiteurs qui ont désactivé Javascript. Pour cela, j’ai ajouté au menu normal :
<noscript>Ce menu de navigation s'affiche en bas de page parce que JavaScript a été désactivé. Il suffit de le réactiver pour avoir un affichage normal, vous pouvez aussi choisir un autre menu de navigation sur la page <a href="/aide/javascript.php">Aide JavaScript</a>.</noscript> |
Cet avertissement qui n’est visible que si on désactive Javascript, propose l’autre menu de navigation qui peut être mis en place à partir de la page Aide JavaScript :
| Menu par défaut utilisant Javascript Menu fonctionnant sans Javascript |
Voici son code [4] :
<table width="50%" cellpadding="6" border="1"> |
Explications : Ce code lit la variable $navigateur et sélectionne le bouton radio correspondant (a priori "recent"). <?=$re ?> est une écriture simplifiée pour <?php echo $re; ?> c’est-à-dire : imprimer la valeur de la variable $re. Le formulaire permet le changement de cette variable en "vieux" afin d’utiliser le menu de navigation sans JavaScript. Voici le code du fichier "choix_menu.php" situé à la racine du site qui permet l’enregistrement dans un cookie de la variable $navigateur :
<?php |
Voyons maintenant à quoi ressemble ce menu de navigation sans JavaScript :
Le premier menu déroulant permet de sélectionner une partie du site dont les différents éléments sont indiqués par le deuxième menu déroulant. La sélection d’un élément dans le menu déroulant ne suffit pas, il faut faire "Retour" ou cliquer sur le bouton "Afficher" (pour afficher le menu correspondant à la partie choisie) ou "Envoi" (pour se rendre à la rubrique sélectionnée), ceci afin de faciliter la navigation des personnes n’utilisant pas de souris [5].
Voici son code :
<form action="<?=$PHP_SELF ?>" method="post" name="choix"> |
<?=$PHP_SELF ?> indique l’adresse de la page en cours. Pour afficher les rubrique d’une partie du site, on sélectionne cette partie et on clique sur "Afficher". Cette valeur est transmise et récupérée par le deuxième menu.
Voici son code :
<form action="" method="post" name="page"> |
Comme tout menu déroulant, celui-ci est dans un formulaire :
<form action="" method="post" name="page">
<select name="page">Immédiatement commence un script PHP qui contient les lignes de codes à afficher selon la partie du site sélectionnée. Il y a donc une variable pour chaque partie du site, mais pour simplifier la présentation je n’ai écrit que la partie "Aide". [6] Les pages et rubriques sont indiqués avec des liens absolus.
Voyons maintenant comment choisir la partie du site à afficher pour le deuxième menu :
if(!isset($_POST["choix"])) { |
S’il n’y a pas de valeur pour $choix transmis en "POST", le script découpe l’URL : dirname($PHP_SELF); pour reconnaître dans quel répertoire du site se trouve la page courante et permettre d’afficher le menu correspondant. Par défaut la partie "CYES" est proposée, cela permet d’afficher une partie même si on ne retrouve pas de répertoire (cas d’une page à la racine du site).
else { |
Par contre si une valeur $choix a été transmise en "POST" (suite à l’envoi du premier menu déroulant), on récupère la valeur.
if (($choix=="actualite") || ($choix=="cirdd") || ($choix=="themes") || ($choix=="partenaires") || ($choix=="professsionnels") || ($choix=="aide")) { |
On vérifie que la valeur $choix est bien une des valeurs autorisées et on affiche le menu déroulant de la partie choisie. Par défaut c’est le menu de la partie "CYES" qui sera présenté.
Après sélection d’une page, le deuxième menu déroulant envoie l’URL de la page choisie. Cette valeur est transmise et récupérée grâce au code suivant en haut de chaque page :
Pour fonctionner ce script PHP doit être en haut de la page, avant toute balise HTML.
La première ligne : if(isset($_POST["page"])) { $rubrique = ($_POST["page"]); vérifie l’existence de la variable $rubrique transmise en "POST".
La deuxième ligne vérifie la syntaxe de $rubrique : cette URL doit commencer par http:// et finir par .php
if ($navigateur == 'ns4') { echo "<meta http-equiv=\"refresh\" content=\"0; URL=$ret[0]\">"; } Si le nagigateur est Netscape 4 on utilise une redirection en HTML, en effet la fonction header() ne fonctionne pas avec Netscape ; $ret[0] indique la valeur de l’URL choisie après le contrôle par la fonction preg_match()
Pour tous les autres navigateurs, on utilise la fonction header() :
else { header("Location:$ret[0]");
exit(); }
Si quelque chose n’a pas fonctionné, on sort du script : else {exit(); }
La dernière ligne : if(!isset($_COOKIE["navigateur"])) { include('/navigateurs.php'); } correspond à la détection du navigateur, vue au début de l’article.
Si vous utilisez Dreamweaver et des modèles de pages, vous risquez de rencontrer des diffficultés avec ce script : quand vous mettez à jour un modèle, les pages dérivées de ce modèle sont mises à jour, mais Dreamweaver modifie le code en haut des pages (avant les balises HTML).
Pour éviter cet ennui, utilisez plutôt la fonction "rechercher/remplacer dans toutes les pages du site" pour mettre à jour vos pages.
[1] Et par $_SERVER["HTTP_USER_AGENT"] depuis PHP 4. Pour plus d’information, voir la page Les variables prédéfinies.
[2] Le script distingue Netscape 4 des autres anciens navigateurs en raison de son comportement différent comme nous le verrons plus loin dans l’article.
[3] On peut aller plus loin dans la reconnaissance du navigateur et du système utilisé, c’est ce que j’ai fait pour la page Navigateurs modernes conformes aux standards.
[4] Pour simplifier la lecture du code, les éléments de style uniquement esthétiques ne sont pas indiqués (bordure dorée, couleur de fond, effets de couleur sur le bouton "Envoi").
[5] Voir à ce sujet l’article Pan sur les doigts sur OpenWeb.
[6] Pour faciliter l’écriture, j’ai utilisé la forme :
$variable = <<<ABC |
Cette forme facilite l’écriture quand une variable contient plusieurs lignes de code, la délimitation se fait comme indiqué avec 3 lettres capitales, les mêmes au début et à la fin (ne pas oublier le " ;" à la fin), et il n’y a pas à s’inquiéter des quotes simples ou doubles (’ ").