Squelette : Menu dynamique accessible + 3 colonnes en CSS + géométrie variable

Ce squelette vous permettra :
  • de disposer d’un menu dynamique arborescent accessible
  • de disposer d’un affichage en trois colonne avec en-tête et pied de page
  • de choisir entre 6 styles d’affichage
  • de voir quelques boucles sympathiques
  • de voir qu’un peu de php permet d’aller plus loin facilement

Cet article a été mis-à-jour pour être compatible avec la version 1.8 de SPIP.

Licence

Je distribue ce menu en licence LGPL. Cela signifie en gros que vous pouvez l’utiliser comme vous le voulez dans vos développements, qu’ils soient commerciaux ou non.

Utilisation

Le script fourni dans l’archive (au format zip) combine en fait 3 fonctionnalités :

  • gestion d’un menu accessible
  • gestion des feuilles de style alternatives
  • gestion d’une mise en page 3 colonnes avec pied de page

Ce menu est accessible à la navigation au clavier et contient suffisamment d’informations pour permettre sa navigation par un aveugle.

Quelques considérations :

  • le code HTML de la page ne nécessite que des liste (LI) contenant des liens (A)
  • les éléments de la liste ayant le tag STRONG sont automatiquement déplié
  • si le navigateur ne gère pas le DOM, le menu est affiché en mode déplié
  • —> le menu ne fonctionne de manière dynamique que sur un navigateur récent respectant les standards
  • il est nécessaire de placer l’appel au .js du menu après celui-ci, sans quoi le script ne fonctionne pas!
  • le fait que le menu soit clicable sur toute sa largeur (pas seulement sur le texte) est lui aussi un critère d’accessibilité, cette fois-ci aux personnes à mobilité réduite.

Feuilles de styles alternatives

  • Possibilité de changer la mise en page du site en sélectionnant une des feuilles de style alternative
  • mémorisation par cookie du choix de l’internaute

Mise en page 3 colonnes avec pied de page

  • Il n’y a pas de table pour obtenir la présentation en 3 colonnes ; utilisation exclusive de CSS
  • La taille des 3 colonnes est automatiquement ajustée à la plus haute
  • Le pied de page est automatiquement déplacé en bas des 3 colonnes (via javascript)
  • dans le source de la page, les éléments sont placés dans cet ordre:
    1. En-tête
    2. Corps [1]
    3. Colonne de gauche
    4. Colonne de droite
    5. Pied de page

Considérations esthétiques

Capture d'écran d'un article
Capture d’écran d’un article

Ce squelette est une preuve de concept, pas un chef d’œuvre artistique!

Boucles

  • Le fichier menu.html utilise une boucle affichant l’arborescence des rubriques. Mais si une rubrique ne contient qu’un article, c’est l’article qui est affiché directement sur le clic.
  • Le fichier rubrique.html affiche soit la liste des articles s’il y en a au moins un, soit la liste des sous rubriques
  • Le fichier article.html affiche la liste de tous les articles de la rubrique en cours, l’article en cours n’étant pas clicable.

Astuces

  • Les articles et les rubriques peuvent être numérotés (nn. titre : N° point espace titre)
  • Si un article a comme mot clef «MENURACINE», il est placé juste en dessous de accueil dans le menu avant les rubriques (ce qui ne l’empèche de pouvoir être aussi à l’intérieur de sa rubrique).

Installation

Tous les fichiers et dossiers de l’archives sont à placer à la racine du site.

L’archive contient :

  • dossier ecrire
    • mes_options.php3 : contient les paramétrages su squelette (dossier du squelette) plus des fonctions pour avoir plus de raccourcis typographiques.
  • dossier menuAccessible
    il s’agit des fichiers du squelette. Cela vous montre que l’on peut séparer dans SPIP les squelettes du reste.
  • mes_fonctions.php3 : diverses fonctions utiles (ou non) au squelette.

Attention : si votre site a déjà un fichier mes_fonctions.php3 à la racine ou un fichier mes_options.php3 dans ecrire : ne les écrasez pas avec ceux de ce squelette, mais rajoutez-y les éléments de celui-ci.

Footnotes

[1Il est important que celui-ci soit avant les menus. En effet, placez-vous dans la tête d’un aveugle quelque instant. Celui-ci arrive sur une page, en lit le contenu et navigue ailleurs par les menus. Arrivée sur la deuxième page, il preférera lire le contenu de la page avant de relire le menu!

updated on 29 September 2018

Discussion

20 discussions

  • Hola

    Merci pour vos squelettes. Ça fait long temps que je cherchais un code css pour faire une structure centrée avec 3 colonnes mais sans table… et voila que je l’ai trouvé, mais je suis absolument nulle en java script…

    Quelqu’un peut m’expliquer commet pourrais-je utiliser les feuilles de styles et non pas les codes pour le menu arborescent (que je trouve royal, mais pour cette fois je n’ai pas vraiment besoin)… j’ai lu que le footer est déplacé en bas via javascript

    Merci d’avance

    Reply to this message

  • 1

    Super le menu, mais j’ai un petit souci :
    sous IE, les images + et - font 1px par 1px !
    Je n’ai pas le probleme sous moz1.6.

    Ce que je ne comprend pas, c’est que sur spip-contrib, ca marche.

    Je n’ai vu nul part la taille de l’image dans le javascript, c’est lié à une feuille de style ?

    Merci.

    @++

    • Question bete ...

      Il faut specifier la taille de img dans le css.
      Maintenant, c’est sous moz que les + ne s’affichent qu’au premier niveau ...
      Bon, ca marche sur ton site alors je vais bien trouver, mais je me serai bien passé du css à ralonge.

      Merci pour ce boulot en tous cas

      @++

    Reply to this message

  • Bonjour,
    Que faut t’il comprendre par menu acessible à la navigation au clavier ? Cela marche t’il avec explorer 6 ?
    merci

    Reply to this message

  • Bravo : contrib tres intéressante et fonctionne tres bien .
    Cependant , je ne maintrise pas complètement le système de cookie .
    En effet , j’ai bien trouvé le script “selectstyle” qui va écrire le cookie ’style".
    Cependant , je ne comprends pas comment on va le relire et comment automatiquement le bon css est reselectionné .

    Quelqu’un peut-il m’expliquer ?

    Reply to this message

  • 1
    Ndjoundjou

    Bonjour, je découvre les squelettes avec spip voulant m’amuser à changer l’apparence basique de mon site spip, pour cela j’ai téléchargé ce squelette, je l’ai installé et j’ai commencé à vouloir le modifier
    J’ai mis le choix de présentation dans la colonne de gauche (fier de moi d’avoir modifié un bout de code par un bête copié-collé !)

    puis j’ai essayé d’enlever la colonne de droite qui ne me servait plus à rien et là elle a bien disparu mais le footer a disparu lui aussi et les boutons permettant le recalcul de page se sont dissimulés derrière la colonne de gauche !

    Une idées pour un petit sacarabé du squelette que je suis ?

    • Dans la feuille de style, par ex par défaut ’styles.css’, tu mets la valeur de la partie ’width’ à 0 :
      #right
      position: absolute;
      top:0;
      right:0;
      width:0px;
      background-color: white;

      Tu peux insister en mettant, dans les pages mêmes “sommaire.html” par ex.,
      div id=“right” width=“0px”

      Enregistrer sous, FTP puis vide les caches du site.

      A noter: la colonne ne comprend pas le header ni le footer.

      Hope this helps.
      @+,
      Eric

    Reply to this message

  • 2

    euh.. je trouve pas le lien de téléchargement .. :-((

    • Manifestement, y’a un bug!

      Le squelette est surrement là, mais SPIP contrib tournant sur la future version 1.8 de SPIP, de temps à autre, il y a un bug.

      Il sera sans doute résolu demain...

    • pourrais tu le mettre aussi sur ton site (plus stable)?

    Reply to this message

  • 1

    en clair :
    je souhaite proposer un menu horizontal avec les logos des rubriques de premier niveau (racine du site), “associé” à un menu dynamique “texte” sur toutes les autres sous-rubriques.

    Peux-je ?

    merci-je ;-)

    fred

    • Oui, c’est possible (comme presque tout, sauf le café, avec SPIP).

      2 pistes:

      • utiliser le paramètre id_parent!=0 pour ne pas prendre les rubriques racines
      • utiliser doublons en ayant fait au paravant une boucle n’affichant rien, mais appelant les rubriques racines.

      À creuser et faire une contrib quand c’est fait.

    Reply to this message

  • 1

    Bonjour, est-il possible d’afficher les articles dans les rubriques et sous rubriques et sous-sous-rubriques, et ce même s’il n’y en a qu’un seul; car je crains que l’internaute ne comprenne pas bien pourquoi lorsqu’il clique sur, par exemple, la rubrique “fruit”, on l’envoi d’office sur l’article “pomme” alors qu’il n’a peut être pas envie d’aller sur pomme et voulait simplement savoir ce qu’il y avait à l’intérieur de la rubrique fruit !

    Plus clairement, je voudrais afficher les articles à l’intérieur des rubriques, et que lorsqu’on déroule une sous-rubrique, on tombe sur la liste des articles, et ce même s’il n’y a qu’un seul article.

    Reply to this message

  • Jacques PYRAT

    Toujours mettre une unité, sauf si la valeur est 0.
    C’est une astuce d’optimisation des CSS.

    En effet, 0em ou 0pt ou 0px, ça fait toujours zéro, quelle que soit l’unité.

    Reply to this message

  • « left:0; » et « right:0; » : il faut ajouter une unité, par exemple « left: 0em; » ou « right: 0px; ».

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom