Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Machine à café «  

Menu des sections

J'aimerais "bêtement" mettre un menu de navigation sur mon site.
Je voudrais avoir dans une boîte de navigation un menu de mes sections, comme sur beaucoup de sites.

Evidemment, je ne veux pas l'écrire en dur pour ne pas avoir à le modifier à chaque modification de mon arborescence de sections.

Et à ma grande surprise, soit il est tard et j'y vois plus rien, soit ce n'est pas possible dans yacs.

Je vous met un lien vers la page correspondante dans ma maquette, le menu est à gauche Maquette
Fernand
avatar
from Paris
1287 posts

on June 6 2006


Dans YACS, il y a une section spéciale qui s'appelle "Menus" Si elle n'existe pas, tu la crée en tant que section spéciale et tu lui donne le nom que tu veux.
Tu crées une page dans cette section que tu appelles "Menu" (pour rester orginal). Dans cette page tu écris les données que tu veux voir apparaître à ton menu avec les adresses des sections. Un exemple, celui de ce site (je suis fainéant, alors je n'ai pas été chercher ailleurs pour répondre à ton cas de figure précis, mais les données sont les mêmes):

[search]
[menu=Home]index.php[/menu]
[submenu=Français]sections/view.php/41[/submenu]
[submenu=Site Map]sections/index.php[/submenu]
[submenu=Categories]categories/index.php[/submenu]
[submenu=Members]users/index.php[/submenu]
[submenu=Help]help.php[/submenu]

Tu vois ce que ça donne pour la section "Français", par exemple, qui est chez nous la section=41. He bien tu fais la même chose en ce qui te concerne pour les sections figurant au hit parade du site que tu es en train de faire.
Comme le dirait Agnès: ".. du YACS tout craché " (ça c'est un slogan!). L'équilibre entre automatisme et la liberté de choix.
Fastoche, non.
Agnès
avatar
from le Grésivaudan (grenoble-chambéry)
Associate, 2030 posts

on June 6 2006


Fernand : Merci pour ta réponse. Je crois cependant que le pb se situe un peu ailleurs : il faut en l'occurence que le menu soit généré automatiquement avec les sous-sections présentes, de manière à ne pas être obligé de refaire le menu si les sous-sections changent, ce qui sera le cas puisque les sous-sections sont le reflet du catalogue produits de l'entreprise (lequel évolue bien sûr).

Les fonctionnalités que nous avons repérées dans Yacs ne suffisent pas à cet objectif - sauf si nous sommes passés à côté de quelque chose, mais dans ce cas tant pis. Tof s'est attelé à la tâche. Nous en avons besoin pour demain ( ).

On vous tient au courant.


Agnès
Il n'y a pas de problèmes, que des solutions.
GnapZ
from Caribbean
2970 posts

inspired from Agnès on June 6 2006


Agnès : Je vois ce que vous voulez et j'ai fait quelques essais mais rien de concluant. Avoir une fonction qui liste les sections (et sous-sections sur plusieurs niveaux) pourait être utile surtout dans l'exemple de la maquette.

Je ne sais pas trop m'y prendre mais Tof semble savoir alors bon courage. Je vois ça un peu comme la fonction sitemap mais en liste et sur plusieurs niveaux de profondeur. Ensuite, le résultat pourrait être placé soit dans un article, soit en boîtes.

En fait, ça pourrait carrément remplacer le sitemap (index.php des sections) car cela donnerait au moins la même chose mais avec la profondeur complète des sous-sections. Une sorte de liste des sections de tête avec chaque sous-niveau dans un folder ... sauf que les Folder ne s'imbriquent pas (encore).
Tof
from Grenoble-Chambery
512 posts

inspired from GnapZ on June 10 2006


Voilà, j'ai fini mon menu.

Il faut inclure le code suivant dans son skin.php et l'appeler depuis son template.php par l'instruction suivante : Skin::build_navigation_menu($father); où $father contient l'id de la section mère de l'arborescence à traiter. Cette instruction est à placer après le Page::Side();

Le code à inclure dans son skin.php est dans le fichier attaché situé sur cette page.

Tof
GnapZ
from Caribbean
2970 posts

inspired from Tof on June 10 2006


Tof : Ben j'en ai un peu bavé parce que je n'avais pas compris (puisque mal lu) qu'il fallait copier ton fichier DANS le skin.php ! J'essayais de l'appeler par un include, alors j'y avais ajouter les balises php ... bon ça a marché mais quand j'ai relu comme il faut, j'ai remis comme prévu et c'est bon.

Je n'ai qu'une seule section avec 2 sous-sections donc je n'ai pu tester que celle-là. Par contre, j'ai pas réussi à utiliser le 2ème paramètre, ça me donne rien.

Donc, que doit-on mettre en 2ème paramètres (facultatif) pour avoir le nom de la section du param1 en titre ?

Peut-on avoir (héhé, l'idéal) l'arborescence depuis la racine (sitemap), sachant que celle-là n'a pas de numéro ?

En tous cas, merci.
Tof
from Grenoble-Chambery
512 posts

on June 10 2006


GnapZ :

Le deuxième paramètre (facultatif) sert à passer l'id de la section courante pour pouvoir l'avoir en gras dans le menu. un exemple tiré de mon template.php pour retrouver la section courante : // récupération section courante
$is_section = strpos($_SERVER['PHP_SELF'], $context['url_to_root'].'sections') === 0 && $_REQUEST['id'];
if ($is_section) $_SESSION['current_section'] = $_REQUEST['id'];
elseif($_REQUEST['section']) $_SESSION['current_section'] = $_REQUEST['section'];


Pour afficher le menu complet, je n'ai pas réussi vraiment; ça marchotte en passant null en premier paramètre mais pas de manière arborescente.
Je n'ai pas eu le temps de vérifier mais je crois que la fonction get_children_of_anchor renvoie toutes les sections si elle reçoit null en paramètre alors qu'elle ne renvoie que les noeuds enfants d'une ancre spécifiée (pas les autres descendants).

Tof
GnapZ
from Caribbean
2970 posts

inspired from Tof on June 10 2006


Tof : Ok, merci, je vais essayer d'approfondir mais je passe mes journée sur free et le bug de la 6.5 ... j'suis tenace jusqu'à ce que Bernard nous dise "ben, c'était juste ça" !
Bernard
avatar
from nearby-an-airport
Associate, 6732 posts

inspired from Tof on June 12 2006


Tof: très bien tout ce boulot. Je pense le reprendre dans la 6.6, et le généraliser comme suit :
  • dans skins/skin_skeleton.php, création d'une fonction build_tree() pour la construction graphique d'un arbre, sur le modèle de build_list() pour les listes. L'intérêt, c'est que ça existe pour tout le monde, tout en étant dérivable dans son skin.php
  • dans sections/sections.php, création d'une fonction get_tree() pour obtenir la structure de données qui sera affichée dans build_tree().
  • dans codes/codes.php, création d'un code particulier, genre
[tree=123], pour créer une arborescence où on le souhaite, comme on le souhaite.
Tof
from Grenoble-Chambery
512 posts

inspired from Bernard on June 13 2006


Bernard :

ça me convient tout-à-fait. Welcome Back, Sir


Tof
Bernard
avatar
from nearby-an-airport
Associate, 6732 posts

on June 13 2006


Tof: Attention en juillet je pars trois semaines...
Cloubech
avatar
from Chonas l'Amballan
Associate, 779 posts

inspired from Bernard on June 13 2006


Bernard : Et ce rallye des princesses. Bien passé ? non je dis ca parce que j'en ai croisé quelques unes vers Grenoble
Bernard
avatar
from nearby-an-airport
Associate, 6732 posts

inspired from cloubech on June 13 2006


Cloubech: pas mal merci. YACS s'est avéré assez puissant, avec quelques overlays de mon cru, pour faire tous les classements. Presque tout seul en plus, puisque j'ai rajouté cette année une moulinette en PHP pour récupérer les temps des chronos électroniques. Beaucoup de boulot en début de semaine pour l'ajout d'un tableau de contrôle demandé par mon collègue, puis plus cool après... Donc, YACS en serveur d'appli sur le terrain, ça fonctionne pour de vrai ! Qu'on se le dise !

Rate this page
Posted by Tof on June 5 2006, commented by Bernard on June 5 2006, (popular)