Menu dépliant tout en spip (sans php ni javascript)
jeudi 20 octobre 2005, par skystan. Dernier ajout mardi 2 janvier 2007
Un petit menu auto-extensible entièrement SPIPIEN, sans php, java ou autre composante étrangère...
Pour faire un menu "dynamique", il fallait souvent mélanger ses boucles avec un peu de php, un zest de java et beaucoup de doigté.
Voici un menu tout simple qui utilise la balise #EXPOSER et une feuille de style.
[* ! ATTENTION pour l’instant la balise [(#EXPOSER|oui,non)] fonctionne toujours avec SPIP 1.9, mais si avec les futures versions vous avez des problèmes, il faudra la modifier avec [(#EXPOSE{oui,non})] Je vous ai préparé les archives zip avec l’une ou l’autre des balises.*]
Placez le fichier "menu.php" à la racine de votre répertoire SPIP ou dans votre répertoire dédié aux squelettes (voir la doc spip si vous ne savez pas de quoi je parle).
Ajoutez le code css dans votre feuille de style perso et adaptez le à vos exigences :
enfin, copiez le bout de code suivant à l’emplacement du menu dans vos squelettes :
pour SPIP 1.9 :
pour les versions avant SPIP 1.9 :
ceci intègrera automatiquement le menu dans vos page avec la coloration du menu.
Le menu
Le menu en action
Si vous ne voulez pas bénéficier de la coloration grâce à la balise #EXPOSER, un simple
sufira !!!!
Pour ceux qui sont encore avec des fichiers .php3, il faut renomer les fichiers .php en .php3 et changer le code à intégrer pour celui-ci :
Super le menu, merci je cherchais ça depuis un bout de temps.
Je bloque cependant sur quelques points :
coloriser les sous-rubriques de la même couleur que la rubrique sélectionnée
donner un autre style aux sous-rubriques (taille, backgroung-image...)
règler les propriétés des liens en survol (a:hover)
A cette adresse, dans la colonne de gauche, le menu"tout en SPIP" est en bas( le menu supérieur est factice).
Malgré des bidouillages sur menu.html et sur le CSS concernant le menu, je suis en panne.
C’est bon, j’ai eu le résultat obtenu... grâce à l’aide d’une ami développeur (Merci Mr TO.)
Tout a été fait -bien sûr- en CSS et en SPIP et je l’ai placé et décliné à plusiuers endroits du site (-> voir le fichier HTML pour le code).
Très attiré par ce menu proposé, j’ai testé mais j’ai cette erreur ci dessous sans parvenir à la résoudre. Quelqu’un pour m’aider ? Merci bokou ;)
# Erreur(s) dans le squelette
* Erreur sur le site, - Fichier menu.php introuvable
* Erreur sur le site, - Fichier menu.php introuvable
* Erreur sur le site, - Fichier menu.php introuvable
Je débute sous SPIP et je ne comprends pas le fonctionnement de tout ça. Par contre, je suis très intéressé par un tel morceau de code.
Toutefois, je ne suis pas tout à fait dans la même configuration. Ce que je souhaiterais, c’est d’afficher uniquement les sous-rubriques correspondant à la rubrique cliquée, sachant qu’il n’y a pas forcément d’articles (ou autres) de publiés dans les sous-rubriques.
Quelqu’un pourrait m’expliquer un peu plus comment ce menu fonctionne ?
Merci beaucoup
Pour simplifier encore plus tout ça, ce qui serait génial serait un critére expose qui permettrais d’afficher depuis n’importequel niveau du site le même menu...
Aprés avoir essayé cette solution je crois qu’il est plus simple d’utiliser un peu de php. En rajoutant le menu avec un <INCLURE{fond=inc-menuvertical}{id_rubrique}> (ou <INCLURE{fond=inc-menuvertical}{id_article}>). De cette maniére on peu faire un menu qui affiche les bonnes rubrique depuis n’importe quel endroit du site.
oui, toute simplification est intéressante, mais pas en insérant du php. Le but est de supprimer le maximum de php de nos squelettes, pour coder en SPIP pure.
Sur le fond tout à fait d’accord avec toi, sauf que mettre plein de boucles pour faire deux lignes de php je trouve ça domage. Jusque là c’est vraiment la solution la plus simple pour un menu qui soit accessible depuis n’importequel profondeur en affichant les bonnes sous rubriques ( par exemple avec un menu horizontal et un menu vertical) en plus ça marche à tout les coups et c’est super facile de maintenance. Je me suis permit de l’écrire parce que ces deux lignes me simplifie la vie à chaque fois. Une autre solution sans php c’est cacher toutes les rubriques qu’on ne veut pas voir avec les css, mais c’est pas trés sémantique, et ça alourdie la page, ça marche à la limite pour un sous sous niveau. L’ideal serait un critére "expose" dans les boucles, mais bon étrangement il existe pas. Récupérer des variables de spip et jouer avec avec php, c’est une super technique dans certain cas !
Je sais pas si çà peut être utile à quelqu’un mais dans mon cas, je voulais n’afficher que certains articles (les articles étant définis manuellement par moi)
Pour cela, j’ai rajouté un mot clés "_nonaffichee"
Ensuite, sur les rubriques où je ne désirais pas afficher les articles, j’ai rajouté le mot clés
J’ai installé tout comme indiqué et mon problème n’est pas que tout est "déroulé", mais l’inverse, tout reste "enroulé" quelque soit la sélection. Seules les rubriques de la racine apparaissent (après la correction EXPOSE).
Problème réglé : j’ai placé le lien INCLURE(menu.php3) id_rubrique dans la page sommaire, mais j’ai laissé INCLURE(menu.php3) dans les pages rubrique et article. C’est tout le contraire qu’il fallait faire...
je pense qu’en remplassant le critère {racine} par {id_secteur} dans la boucle principale cela devrait fonctionner.
Par contre, il ne sera pas utilisable sur le squelette "sommaire.html", étant donné qu’il n’y a pas de secteur identifié !! Une simple boucle RUBRIQUES pour lister les rubriques pincipales à la racine suffira de toute façon sur cette page.
Ne connaissant pas la structure de ton site, je ne peux pas faire plus... désolé.
Effectivement, ça fonctionne presque en remplaçant racine par id_secteur.
Il fallait juste rajouter une boucle RUBRIQUE contenant le tout.
Par contre, j’ai toujours un problème : j’ai une redondance des articles des sous rubriques qui reviennent au niveau 1 :
o Administratif
o locaux
o références
o équipe
+ Dominique Molard
+ Jacqueline Molard
+ Christian Pupier
+ Edouard Molard
o Dominique Molard
o Jacqueline Molard
o Christian Pupier
o Edouard Molard
Oui, la balise exposer focntione, seulement je voulais eviter d’avoir le menu déplié et j’ai donc fait le changement en expose. Je t’envoie mon fichier par email.