Menu DHTML multi-niveaux

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Ce menu provient de DHTMLCentral. Il vous permet de rendre constamment accessible toutes les rubriques de votre site. Son utilisation est gratuite à condition de laisser le copyright. Les boucles mélangeant PHP et SPIP sont d’Arnaud et les costumes de Donald Kardwell. ;)
demo

Tester le menu

Avantages
- Afficher le menu avec une arborescence jusqu’à 3 niveaux de profondeur dans cette version. Les adaptations PHP et SPIP à faire sont minimes pour rajouter des niveaux le cas échéant.
- Afficher facilement d’autres éléments de menu en dehors des boucles et y associer des styles ou des évènements différents.

Inconvénients
- Si vous avez de nombreuses rubriques évitez de l’installer sur Free, Lycos et Cie. Quand la page n’est pas en cache, ces boucles sont (à mon goût) trop violentes pour leurs serveurs surchargés.
- Beaucoup d’options DHTML choisies ou de jeux sur les CSS, c’est risquer de flinguer l’affichage sur certains navigateurs. A manier donc avec parcimonie et tester le plus souvent possible la compatibilité avec les butineurs.

Mise en place

Téléchargez le pack et décompressez le à la racine de votre site.

Normalement, la seule modification obligatoire est la suivante :
menu.html - ligne 110 : « offlineroot » réclame le chemin de votre site sur le disque dur de votre site (utilisez le fichier real.php inclus pour le trouver rapidement)

le pack se compose de 6 fichiers :
fonctions/coolmenu4.js :
le script

fonctions/fill2.gif :
une image de fond exemple pour les calques du menu (inversez le commentaire dans les CSS de menu.html pour la supprimer)

fonctions/fleche_menu.gif :
flèche affichée dans le calque si une sous-rubrique est présente

menu.php3 :
page spip d’appel du squelette

menu.html :
fichier squelette avec les styles et les boucles... le seul à tripoter a priori

real.php :
placé à la racine du FTP, il affichera le chemin physique de votre site (ex : /home/sites/site111/web)

Pour des détails concernant les modifications de styles et les éventuels bugs du script, reportez vous à l’aide en ligne et au forum dédié au CoolMenu 4 sur DHTMLCentral mais aussi au thread d’origine sur la liste de diffusion SPIP.

Compatibilité

Le script du pack fonctionne avec les navigateurs suivants.

  Windows Mac Linux
Internet Explorer 6 Oui  ? ---
Internet Explorer 5.x Oui Oui ---
Mozilla 1.x Oui Oui  ?
Phoenix 0.5 Non ---  ?
Netscape 6 >7 Oui Oui  ?
Netscape 4.7 Oui*  ?  ?
Opera 7 Oui --- ---
Opera 6 Oui Non  ?
Opera 5  ?  ?  ?
Konqueror --- ---  ?
Apple safari (beta 2) --- Non ---

* enlever l’image de fond du style level0

Boucles

<?php $top=-1; $sub=-1; $subsub=-1; ?> 
<BOUCLE_menutop(RUBRIQUES){id_parent=0}{par titre}>
<?php $top++; ?>
<script>
oCMenu.makeMenu('top<?php echo $top; ?>', '', '&nbsp;#TITRE', '#URL_RUBRIQUE', '', '', '', '', '', '', '', '', '', '', '', '', '')</script>
  <BOUCLE_menusubrub(RUBRIQUES) {id_parent} {par titre}><?php $sub++; ?>
   <script>oCMenu.makeMenu('sub<?php echo $sub; ?>', 'top<?php echo $top; ?>', '&nbsp;#TITRE', '#URL_RUBRIQUE')</script>
   	<BOUCLE_menusubsub(RUBRIQUES){id_parent}><?php $subsub++; ?>
	<script>oCMenu.makeMenu('subsub<?php echo $subsub; ?>', 'sub<?php echo $sub; ?>', '&nbsp;#TITRE', '#URL_RUBRIQUE', '', 150, 0)</script>
	</BOUCLE_menusubsub>
</BOUCLE_menusubrub>
</BOUCLE_menutop>

La même pour gérer 4 sous-niveaux

On déclare « $subsubsub » en haut et on rajoute la boucle subsubsub à l’intérieur de la boucle subsub. Vous pouvez tout aussi bien appeler des ARTICLES à la place des RUBRIQUES.

<?php $top=-1; $sub=-1; $subsub=-1;$subsubsub=-1; ?> <BOUCLE_menutop(RUBRIQUES){id_parent=0}{par titre}>
<?php $top++; ?>
<script>
oCMenu.makeMenu('top<?php echo $top; ?>', '', '&nbsp;#TITRE', '#URL_RUBRIQUE', '', '', '', '', '', '', '', '', '', '', '', '', '')</script>
  <BOUCLE_menusubrub(RUBRIQUES) {id_parent} {par titre}><?php $sub++; ?>
   <script>oCMenu.makeMenu('sub<?php echo $sub; ?>', 'top<?php echo $top; ?>', '&nbsp;#TITRE', '#URL_RUBRIQUE')</script>
   	<BOUCLE_menusubsub(RUBRIQUES){id_parent}><?php $subsub++; ?>
	<script>oCMenu.makeMenu('subsub<?php echo $subsub; ?>', 'sub<?php echo $sub; ?>', '&nbsp;#TITRE', '#URL_RUBRIQUE', '', 150, 0)</script>
		
		<BOUCLE_menusubsubsub(RUBRIQUES) {id_parent}><?php $subsubsub++; ?>
		<script>oCMenu.makeMenu('subsubsub<?php echo $subsubsub; ?>', 'subsub<?php echo $subsub; ?>', '&nbsp;#TITRE', '#URL_RUBRIQUE', '', 150, 0)</script>
		</BOUCLE_menusubsubsub>
	
	</BOUCLE_menusubsub>
</BOUCLE_menusubrub>
</BOUCLE_menutop>
Memento des fonctions disponibles dans
l’appel d’un niveau de menu


(name, parent, txt, lnk, targ, w, h, img1, img2, cl, cl2, align, rows, nolink, onclick, onmouseover, onmouseout)

name = nom du calque
parent = nom du calque parent s’il s’agit d’une sous-rubrique
txt = affichage d’un texte à la place du lien dans la barre d’état
lnk = le lien vers la rubrique
targ = _self, _blank, _parent, _top
w = largeur du calque
h = hauteur
img1 = si vous n’utilisez que des images, c’est le chemin vers celle qui s’affichera OnMouseOut
img2 = chemin de l’image à afficher OnMouseOver
cl = nom du style OnMouseOut
cl2 = nom du style OnMouseOver
align = alignement du nom de rubrique dans le calque (left, right, center)
rows = pour décaler une sous-rubrique vers sa colonne parente (1 ou ’’)
nolink = 1 ou ’’ supprime le curseur de lien et son lien
onclick = action javascript supplémentaire « OnClick »
onMouseOver = évènement javascript supplémentaire « OnMouseOver »
onMouseOut = évènement javascript supplémentaire « OnMouseOut »

Bon courage, le jeu en vaut la chandelle.

Discussion

31 discussions

  • Merci pour vos travaux !!!
    J’apprécie ce menu déroulant que j’attendais.

    Répondre à ce message

  • Jean-Marc Coursimault

    Bonjour,

    Je me demande ce qui se passe au niveau du référencement. Dans le source, il n’y a pas vraiment d’URL, simplement des noms de fichier du genre rubriquexxx.html, dans une ligne du genre

    oCMenu.makeMenu(’id4’,’id0’, ’Revendeurs’,’article1.html’)

    Quelqu’un a t-il une idée sur ce qui se passe au niveau de Google et autres ?

    Merci
    — Jean Marc

    Répondre à ce message

  • 1
    webtice

    Bonjour à tous,

    Ma question est simple : comment désactiver une rubrique de secteur ? (je souhaite ne plus voir apparaître la rubrique « Archive » dans le menu.

    Merci pour toutes les réponses précédentes

    • il suffit d’ajouter

      {id_rubrique!=5}

      par exemple, si ta rubrique porte l’id n°5 dans la boucle qui la fait apparaître.

    Répondre à ce message

  • Sloanapy

    Bonjour !

    Merci pour ce code qui fonctionne parfaitement. L’adaptation est simple, le résultat tout à fait satisfaisant.

    Pour enrichir le débat sur l’adaptation aux divers navigateurs, pensez à vérifier le comportement en impression !!

    Sous Mozilla Firefox, le fait d’avoir le menu dans une classe ID=« navigation » et un display=none en impression.css ne suffit pas à éliminer le menu qui vient se superposer au texte...

    Dans le même contexte, ça marche très bien avec IE6. Dommage que le placement soit aussi problématique entre les deux navigateurs !

    Répondre à ce message

  • 1

    Compatibilité

    Windows Mac Linux
    Mozilla 1.5 Oui Oui Non
    Galeon 1.3 - - Non

    Mozilla & Galeon sous Linux : Le menu s’affiche mais si le texte du lien prend deux ou plusieurs lignes, on ne voit pas les deuxième et suivantes. Les liens fonctionnent correctement. Lorsque le sous-menu dépasse de la fenêtre, on ne voit pas les derniers items à moins de faire dérouler la fenêtre.

    + très lent à l’affichage et lors du dépliement.

    • webtice

      Bonjour précission concernant la compatibilité

      Linux
      Galéon 1.3.8 oui
      Mozilla 1.4 oui

    Répondre à ce message

  • 2

    Désolé, je suis tout à fait débutant. J’ai mis votre formidable menu et il marche si j’appelle ../menu.php3, mais comment le mettre dans mon SPIP, càd sommaire, rubrique, etc ?
    Merci pour une réponse
    André

    • Ca va j’ai trouvé !

    • Mais comment positionner ce menu sur la page ? Quel paremetre il faut changer ?

    Répondre à ce message

  • merci beaucoup pour ce super menu ! c’est exactement ce que je recherchai pour un débutant comme moi en spip ! bonne continuation

    Répondre à ce message

  • sur Safari/macosx OK

    sur camino /macosx OK

    voilà

    NG

    Répondre à ce message

  • 1

    Bonjour
    j’ai posé la question sur le forum Spip mais je n’ai pas obtenu de réponse alors je me permets de poster ici, j’espère que je ne vais pas déclencher les foudres :
    Je signale que je suis débutant et que j’ai installé spip en local ;
    Apres quelques difficultés l’install s’est termine et j’ai pu acceder à mon espace admin où j’ai saisis le nom du site et son url
    ce que je ne comprends pas c’est qu’il n’y a aucun dossier ou document portant le nom de mon site dans le repertoire spip et quand je clique sur le bouton « visiter le site » j’obtient une page avec ce message :

    Not Found The requested URL /spip/monsite was not found on this server. Apache/1.3.27 Server at Serveur.local Port 16080

    J’avais essayé Spip sur free et ça s’etait tres bien passé, est-ce que quelqu’un a une solution à mon problème ou peut me dire où je dois m’adresser ?
    merci d’avance

    Répondre à ce message

  • 1

    une chose que je ne comprends pas.

    j’ai bien un joli menu tout bien foutu, mais dont la « première case » ne veut pas fonctionner sous opéra tandis que sous explorer ça marche ? vous y comprennez quelque chose ?

    • bon en poursuivant mes tâtonements... il m’a suffi de placer ce menu dans un calque et ça fonctionne correctement... maintenat il reste à fignoler les bidouillages pour que la position du menu reste la même dans explorer ou dans un autre navigateur... mais pourquoi c’est si compliquééééééééé ouiiiiiinnnnn

    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