Une arborescence dynamique et contextuelle (le retour)

L’idée de cette contribution est d’apporter une alternative légère et maintenable au menu contextuel Une arborescence dynamique et contextuelle
L’apparence du menu reproduit celle de la contribution ci-dessus mais peut être facilement modifiée par la feuille de style.

On cherche à éviter le code complexe mélangeant HTML, PHP et balises SPIP et à limiter le travail du serveur par :
-  un squelette de menu HTML (boucle SPIP générant du HTML + boucle SPIP générant une liste JavaScript de rubriques)
-  sur le navigateur du visiteur, un code JavaScript parcourt le menu et applique les classes CSS adéquates (en se basant sur le tableau JavaScript) pour gérer l’apparence du menu.

L’apparence est gérée par feuille de style CSS.

On utilise les fichiers suivants :

  • menu.html/menu.php3 = squelette du menu
  • menu.css = feuille de style pour mettre en forme le menu
  • menu.js = code JavaScript pour le marquage des éléments du menu (application des classes CSS)
  • dhtml.js = pour améliorer la portabilité multi-navigateurs

Pour utiliser ce menu :

  1. décompressez le fichier .zip à la racine du site,
  2. dans le squelette de rubrique ou d’article ou vous souhaitez inclure ce menu, placez la directive suivante : <INCLURE(menu.php3){id_rubrique}>

Compatibilité

PlateformeNavigateurFonctionneNe fonctionne pas
Windows Internet Explorer 6.0 .
Windows Firebird 0.7 .
Linux Mozilla  ? .
menu dynamique

Discussion

16 discussions

  • 1
    Sylvain

    hello,

    j’ai pas de IE 6 pour tester, doit-il se déplier comme le fait l’autre : en cliquant sur la flèche, sans recharger la page ?

    tests perso :
    -  Mozilla 1.6 et Firefox 8.0 (Win et Linux) -> ce déplie pas mais affichage correcte
    -  IE 5.0 -> se déplie pas et affichage médiocre (puces passent au dessous du texte) de toute façon c’est seulement IE 5.5 qui commence à être un peut correcte avec les CSS ;-)

    bref, au vu de ces tests peut concluant (je veux le déplié) je vais garder l’ancient : Une arborescence dynamique et contextuelle

    • Avec l’ancienne version, j’avais de gros problèmes de mise en page en mac IE 4.5.

      Maintenant, je n’ai plus qu’à résoudre celui de la puce...

    Répondre à ce message

  • 2

    Est-ce que c’est possible de le voir en action sur le web quelque part ? Est-ce normal qu la flèche porte un lien vers son rubrique (au lieu de simplement déplier son sous-menu) ?

    merci, Paolo

    • Pour la mise en ligne d’un exemple, c’est en cours.

      La rubrique active présente les sous-rubriques accessibles pas davantage.

      L’objectif (modeste)n’est pas de réaliser un menu déroulant (qui permettrait de développer toute l’arborescence de menu), mais un menu contextuel, c’est-à-dire un menu qui permette en cours de navigation de se situer dans l’arborescence et d’offrir une navigation vers les sous-rubriques directes.

      Christian

    • quentic

      Un exemple qui tourne sur un site bilingue avec une langue par secteur.

      Attention : Site fonctionnel mais pas du tout esthétique !!

    Répondre à ce message

  • 2

    Suite à l’évolution de spip comment modifier ce menu pour

    1) qu’il puisse afficher les rubriques vides ?
    (fonction dispo dès la 1.7.1, j’ai ajouté {tout}
    à plusieurs endroits sans succès}

    2) qu’il affiche que les rubriques de la langue en cours ?

    Merci...

    • Ah ,ah...
      Il va falloir que j’installe la 1.7.1 pour faire les tests.
      A suivre.

    • violette

      en rajoutant “tout” dans le fichier menu.html, ça marche pour spip 1.7.1.

      Par contre, moi, j’ai un petit problème car après avoir décompressé le fichier zip et inserré , quand j’affiche ma page, il n’y a que les rubriques de premier rang qui apparaissent. Quand je clique sur l’une d’elles, rien ne se déplie.
      Que pasa ?

    Répondre à ce message

  • Merci pour ce menu. Il est bien plus manipulable que la version précédente.
    Je l’ai utilisé pour mon weblog.
    Merci encore,
    Tjos !-))

    Répondre à ce message

  • 1

    Bonjour,

    Je ne suis pas convaincu de l’utilité de ce script par rapport à l’ancien auquel il est très facile d’ajouter des fonctions avec feuille de style puisque les lignes de style sont en haut du fichier menu.html... ;de plus, bien des personnes désactivent les fonctions javascript et là que se passe t-il ?

    Mais bon si certains y trouvent leur compte c’est le principal.

    Cordialement

    • Certains désactivent JavaScript de leur navigateur. Bien peu en fait mais bon dans ce cas, il est vrai qu’on pourrait prévoir une solution du style « afficher tout ».
      L’idée était juste de rendre l’évolution du programme plus simple en séparant au mieux les codes SPIP, PHP, HTML, CSS et JavaScript.

      Ca n’est pas plus ambitieux que ça et ça ne remet pas en cause les versions précédentes qui ont aussi leurs avantages (tout pré-calculé sur le serveur => plus d’indépendance vis-à-vis du navigateur).

      Christian

    Répondre à ce message

  • 1

    Bonjour & Merci pour ce script bien utile !

    J’ais un ptit souci de CSS,
    en effet j’ai definit dans ma feuille de style mes couleurs, ... pour les balises a, a:link ...
    le problème est que ton script herite de ces propriétées et ne tient pas compte du style définit par exemple pour « .secteur a, .rubrique a, .rubriqueterm a, .rubriquetermcolor :#ff9900 »

    je croyais que le style heritait des propriétées si celles-ci n’était pas redefinit, or elles le sont ;0(

    les lien sont affichés avec le style de a color:xxxxxx et non .secteur a color:yyyyyy

    J’ai éssaiyé de modifier #menu_hierar (id) en .menu_hierar (class) mais rien n’y fait !

    Une petite idée ???
    Merci.

    • Etonnant en effet car les définitions CSS de menu.css avec une classe sont plus spécifiques que les définitions générales que tu as dans ta propre feuille de style. Ce sont normalement les plus spécifiques qui doivent s’appliquer.
      Tout se passe comme si la feuille de style menu.css n’était pas vue. Se trouve-t-elle bien dans le même dossier que menu.php ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom