Wayfinder
Réaliser un menu dans MODX en quelques minutes avec Wayfinder
  • 02 septembre 2016
  • Steeve

La première version de Wayfinder a été créée en Août 2006 mais ce nommé DropMenu. Cette extension qui est également un Snippet, permet de créer des menus personnalisés facilement en utilisant des Chunk (bout de code HTML) et/ou en utilisant des paramètres que nous allons voir dans cet article.

Pour appeler le Snippet (extension) il suffit d’écrire au minimum ceci :
[[Wayfinder? &startId=`0`&level=`1`]]

Le point d’interrogation permet d’ajouter des paramètres. Les paramètres peuvent être ajouté de la façon suivante : &nomduparamètre=`valeurduparamètre`.

Les paramètres dans mon exemple sont « startId » et « level » et ils ont pour valeurs respective 0 et 1, « startId » permet de dire à Wayfinder ou démarrer, à partir de quelle ressource il doit créer le menu. Dans cet exemple il doit tout prendre pour créer le menu. Quand au paramètre « level » il sert à indiquer à Wayfinder la profondeur que l’extension doit prendre en compte.

Les principaux paramètres sont :

ParamètreDescriptionValeur par défaut
&startId Le point de départ (ID de la ressource) à partir duquel on va lister les documents. Specifié 0 pour qu'il démarre à la racine du site. Id de la ressource dans lequel on se trouve
&displayStart Afficher le document qui est indiqué dans le menu par &startId. 0
&level Profondeur (nombre de niveau) pour construire le menu. La valeur de "0" inclus tous les niveaux (profondeur). 0
&limit Le paramètre limite indique a Wayfinder de ne traiter que le nombre d'éléments spécifiés par la limite, seuelemnt 5 éléments seront affichés si la valeur de ce champ est "5". 0
&ignoreHidden Ignore la case à cocher "Cacher dans le menu" de la ressource, et les affichent quand même dans le menu si la valeur est de "1". 0
&ph Nom de l'espace de nom qui servira à retourner le résultat au lieu de retourner le résultat directement. Si vous donnez la valeur "monmenu" il siffura de mettre 0
&debug Si la valeur est de "1" ça permet d'afficher les erreurs pour les corriger. 0
&hideSubMenus Si la valeur est de "1", cela affichera seulement le sous-menu actif 0
&removeNewLines Si la valeur est de "1", les retours à la ligne seront supprimer de l'affichage. 0
&textOfLinks Le champ qui doit être récupéré comme valeur pour le texte du lien. Les valeurs possbiles sont : menutitle, id, pagetitle, description, parent, alias, longtitle, introtext menutitle
&titleOfLinks Le champ qui doit être récupéré comme valeur pour le titre du lien. Les valeurs possbiles sont : menutitle, id, pagetitle, description, parent, alias, longtitle, introtext pagetitle
&rowIdPrefix Si il est paramètré, chaque élément aura un ID unique. La valeur sera : valeur du paramètre + ID de la ressource. 0
&useWeblinkUrl Si le paramètre a pour valeur "1", le lien de la ressource de type "weblink", le tag [[+wf.link]] sera remplacé dans le href du lien à la place du lien web. 1
&includeDocs Une liste des ID des ressources séparé par des virgules que l'on veut inclure dans le menu.
&excludeDocs Une liste des ID des ressources séparé par des virgules que l'on veut exclure dans le menu. 0
&cacheResults Mettre en cache les requettes pour un affichage plus rapide. Ajouté depuis la version 2.2.0-rc1.
&cacheTime Un nombre de secondes pour stocker en cache le menu, si le paramètre "cacheResults" est paramétré à "1". Mettre la valeur à "0" pour stocker indéfiniment, jusqu'à ce que le cache soit effacé manuellement. 3600
&contexts Le contexte qui sera utilisé pour construire le menu. Par défaut le contexte courrant. Paramètre ajouté depuis la version 2.2.0-rc1.
&startIdContext Id du contexte ou le menu doit démarrer. Paramètre ajouté depuis la version 2.2.0-rc1.
&config Fichier PHP externe pour configurer Wayfinder (voir core/components/wayfinder/configs pour des exemples).
&scheme Format qui sera utilisé pour générer les URLs. Les valeurs possible sont (basé sur l'API makeUrl) :
  • -1 : (valeur par défaut) URL relative à partir de site_url
  • 0 : voir http
  • 1 : voir https
  • full : URL est absolue, préfixé avec la configuration site_url
  • abs : URL est absolue, préfixé avec la configuration base_url
  • http : URL est absolu, forcé sur le schéma http
  • https : URL est absolu, forcé sur le schéma https. Ajouté depuis la version 2.3.1-pl.
-1
&sortBy Quel champ servira pour ordonner le menu, par exemple publié "published".
&sortOrder Dans quel ordre il faudra ordonner, ascendant ou descendant, 'ASC' ou 'DESC'.
&where Option de filtre au format JSON. Par exemple quand vous voulez afficher que les ressources qui sont de type document &where=`[{"class_key:=": "modDocument"}]` ou à l'inverse cacher des resources qui sont du type Weblink &where=`[{"class_key:!=": "modWeblink"}]`
&hereId Défini l'ID à utiliser dans le snippet. Utilisez une valeur de [[ * id]] si le modèle spécifié par hereTpl et activeRowParentTpl est pas appliqué correctement à l'élément de menu. iterated ID
&hereTpl Le code a utiliser quand il faut afficher l'élément courrant dans le menu.

Les paramètres d’affichage Html des éléments du menu :

Paramètre Description
&outerTpl
Nom du Chunk contenant le modèle du conteneur global (le ul de la liste Html). L'espace de nom a utiliser pour récuperer les documents enfants est [[+wf.wrapper]].
&rowTpl
Nom du Chunk contenant le modèle pour afficher les éléments de sous menu. Si ce paramètre n'est pas renseigné, le modèle &outerTpl sera utilisé à la place.
&startItemTpl
Nom du Chunk contenant le modèle pour l'élément de départ, si elle est activée via le paramètre displayStart. Remarque: le modèle par défaut montre l'élément de départ, mais sans lien. Si vous n'avez pas besoin d'un lien, une classe Css peut être appliqué au modèle par défaut en utilisant le paramètre &firstClass=`className`.
&parentRowHereTpl
Nom du Chunk contenant le modèle pour le document en cours si il est un conteneur et a des enfants. L'espace de nom a utiliser pour récuperer les documents enfants est [[+wf.wrapper]].
&parentRowTpl
Nom du Chunk contenant le modèle pour tous les documents qui sont des conteneurs et ont des enfants. L'espace de nom a utiliser pour récuperer les documents enfants est [[+wf.wrapper]].
&hereTpl
Nom du Chunk contenant le modèle pour le document courant.
&innerTpl Nom du Chunk contenant le modèle pour chaque sous menu. Si il n'y a pas de innerTpl défini, outerTpl est utilisé à la place.
&innerRowTpl
Nom du Chunk contenant le modèle pour chaque éléments d'un sous dossier.
&innerHereTpl
Nom du Chunk contenant le modèle pour le document courant si c'est un sous dossier.
&activeParentRowTpl
Nom du Chunk contenant le modèle pour les éléments qui sont des conteneurs, qui ont des enfants et sont actuellement actifs dans l'arborescence.
&categoryFoldersTpl
Nom du Chunk contenant le modèle pour des dossiers de catégorie. Les dossiers de catégorie sont déterminés en définissant le modèle à vide ou en mettant l'attributs dans le champ de lien rel="category".

Les paramètre de class Css :

Vous pouvez facilement contrôler l’apparence du menu grâce que différents paramètres disponibles ci-dessous.

Paramètre Description Valeur par défaut
&firstClass
La class Css pour le première élément du menu de chaque niveau.
first
&lastClass
La class Css pour le dernier élément du menu de chaque niveau.
last
&hereClass
La class Css pour l'élément qui vous montre ou vous êtes (élément courant). Si c'est un enfant, tous les parents jusqu'au départ auront cette class.
active
&selfClass
La class Css pour l'élément courant uniquement.
&parentClass
La class Css pour les éléments qui sont des conteneur et ont des enfants.
parent
&rowClass
La class Css pour tous les éléments.
&levelClass
La class Css pour tous les différents niveaux. Le niveau va être ajouté sous forme de class (level1, level2, level3 etc si vous spécifié 'level').
&outerClass
La class Css utilisé pour le modèle outerTpl.
&innerClass
La class Css utilisé pour le modèle innerTpl.
&webLinkClass
La class Css utilisé pour les éléments de type weblink.

Codes Css et JavaScript que vous voulez ajouter :

Si vous n’utilisez pas Wayfinder sur toutes les pages (ce qui me semblerait un peu fou mais pourquoi pas selon les cas) vous pouvez ajouter du Css et/ou du JavaScript, ce code devra être dans un Chunk et sera automatiquement ajout à votre code Html ou Wayfinder est appelé.

Paramètre Description
&cssTpl
Nom du Chunk qui contient le Css que vous voulez ajouter à la page ou se trouve l'appel a Wayfinder.
&jsTpl
Nom du Chunk qui contient le JaveScript que vous voulez ajouter à la page ou se trouve l'appel a Wayfinder.

Vous êtes maintenant capable de créer des menus en quelques minutes grâce a Wayfinder.

N'hésitez pas à me contacter si vous avez la moindre question sur ce Snippet.

Source en Anglais

Partagez cet article

A propos de l'auteur

Steeve

Passionné d’informatique, de Design, de développement d'application et du Web en général (participation au start-up weekend, hackathon, dev Var, formation Google...), j’ai créé ce site afin de partager mes connaissances sur mon système de gestion de contenu préféré MODX. En espérant participer au développement de la communauté.

Commentaires (2)

Aurelien goudeneche - dimanche 05 novembre 2017

Merci pour tous ces tutos.
Concernant wayfinder, il est à noter que cette extension peut aussi être remplacer par pdoMenu de la suite de snipet pdoTools mais vous devez déjà le savoir. Au niveau des paramètres les 2 extensions sont très cousines.
https://docs.modx.pro/en/components/pdotools/snippets/pdomenu
pdomenu serait plus rapide et surtout la suite pdotools est mise à jour fréquemment (par un contributeur Russe néanmoins) alors que wayfinder semble quelque peu abandonné.


Steeve - mardi 07 novembre 2017

Bonjour et merci pour votre message !
Bonne remarque, pdoMenu peut remplacer Wayfinder et est plus rapide (selon les besoins car pour un petit site le gain de temps doit être vraiment minime).
J'ai préféré présenter Wayfinder car il est plus simple pour une première prise en main. J'essaierais de faire un autre tutoriel dès que je pourrais m'y remettre ;-)
Aurélien n'hésitez pas à nous rejoindre (communauté francophone de MODX) sur Slack.






Tags autorisés : <b><i><br> Ajouter un nouveau commentaire :