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

Aucune discussion

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