Menus en Typo3

Copyright 2005, Jean-Gaël Rouchon, <jean-gael@rouchon.fr>

Tables des Matières

Menus en Typo3	1

Introduction	1

Présentation des Gabarits et du TypoScript	1

Introduction

Ce manuel vous présente rapidement la manière de créer le s menus usuels des sites en TypoScript.

Présentation des Gabarits et du TypoScript

Le maquettage d'un site en Typo3 permet d'obtenir une présentation homogène sur l'ensemble du site. Cette présentation est effectuée au moyen d'un Gabarit. Ce type de contenu spécial permet de décrire la maquette HTML (fichier HTML classique) qui servira de base au site mais aussi l'ensemble des contenus communs à tout le site (typiquement les menus) ainsi que la configuration de l'ensemble des extensions utilisées dans le site.

Ces gabarits sont hiérarchiques. C'est à dire qu'un gabarit défini à la racine du site sera appliquée à l'ensemble des sous-page du site. Il est possible dans un partie du site de modifier le gabarait ou une partie de celui-ci afin de modifier le comportement du site pour une partie seulement de l'arborescence.

En règle générale on définira le gabarit principal dans la page racine du site afin d'avoir un comportement homogène du site dans l'ensemble des pages.

Le comportement des éléments dynamiques du site sera décrit au moyen du TypoScript. Ce n'est pas à proprement parler un langage de programmation mais plutôt un ensemble de descripteur et d'options de configuration qui seront activés en fonction des besoins. Ces descripteurs adoptent un structure en arborescence. Cette structure est décrite en séparant les différents niveaux de configuration par des points.

Par exemple l'instruction :

page.10 = HMENU

page.10.entryLevel = 1

décrit au sein de l'élément page (ie. la page web), le dixième élément est un Menu, pour ce menu, le niveau à partir duqquel commencer le menu est le niveau 1 (on affiche seulement les niveaux en dessous de la racine du site et on ne liste pas les pages d'entrée du site.

Pour plus d'informations sur le TypoScript, merci de se reporter aux manuels TS by example et TS Reference.

Création d'un gabarit :

Pour créer un gabarit utiliser le menu liste à droite dans le backend, sélectionner la page racine dans l'arborescence du mileur et créer un nouvel enregistrement en bas de la liste à gauche.

On choisi de créer un nouvel enregistrement de type gabarit :

Dans le gabarit, il est obligatoire de renseigner le champ Template Title. On saisira le Typoscript suivant dans le champ Setup :

page = PAGE

page.typeNum = 0

page.10 = TEXT

page.10.value = MENU

page.20 < styles.content.get

On cochera les cases clear constants, clear setup et rootlevel. On ajoutera aussi Content (default) dans Include Static.

On obtient ainsi une page minimale qui permet l'ajout de contenu et dispose d'un emplacement pour le menu.

Afin de visualiser un menu, nous allons créer un ensemble de sous pages à la racine (la racine sera pour les besoins de la démonstration /Formation/Menus/).

Astuce :

Utiliser la fonction Création de pages multiples pour gagner du temps : Menu Fonctions / Menu déroulant à droite : Assistants / Créer plusieurs pages multiples

Premier Menu : Niveau 1

Nous allons maintenant remplacer le menu par quelquechose d'utilisable. Le menu créé sera un menu horizontal listant le premier niveau (Menu 1 / Menu 2 / Menu 3 ...)

On transforme dont l'objet page.10 qui affichait MENU en véritable menu. On spécifiera ensuite que le menu comportera 1 seul niveau (et on en profitera pour rajouter 2 retours à la ligne après le menu pour le décoller du contenu).

On modifie donc le gabarit (Setup) pour avoir :

page = PAGE

page.typeNum = 0

page.10 = HMENU

page.10.1 = TMENU

page.10.1.wrap = | <br /><br />

page.10.1.NO {

linkWrap = &nbsp; | &nbsp;

}

page.20 < styles.content.get

Ce qui donne la page :

Décryptage :

L'objet page.10 : est maintenant un menu. Chaque sous-objet représentera maintenant un niveau de menu. Contrairement au numérotage des objets qui se fait de manière arbitraire en TypoScript (page.10, page.40, page.45), les menus doivent être numérotés en fonction des niveaux de profondeur. On aura ainsi page.10.1 pour le premier niveau de menu, page.10.2 pour le deuxième niveau, page.10.3 pour le troisième ...

Le début d'un menu est toujours un HMENU, les sous-menus (les niveaux qui seront affichés) seront eux des TMENU, GMENU, TMENULAYER, GMENULAYER en fonction du rendu souhaité.

L'objet page.10.1 est le premier niveau du menu. Ce sera un menu textuel (par opposition à un menu composé par des images).

L'instruction wrap permet d'encadrer un objet par des chaînes de caractères. On pourra ainsi spécifier ce qui devra setrouver avant et après un objet TypoScript. On utilisera la barre verticale (|) pour distinguer la partie avant et la châine après. Pour l'objet page.10.1 on spécifie donc que le menu de niveau 1 sera précédé par rien (pas de chaîne de caractères avant la barre) et suivi par 2 retoure à la ligner (<br / en HTML). On décolle ainsi le menu du contenu.

L'instruction NO est spécifique des menus. Elle permet de préciser le comportement du menu lorsque celui-ci est au repos (position par défaut quand la souris n'est pas dessus ou que le menu ne concerne pas la page en cours). On précise ici que le comportement par défaut est de séparer les objets de menus par un espace avant et un espace après (&nbsp; en HTML).

Premier Menu : Niveau 2

Nous allons maintenant modifier le menu afin de visualiser 2 niveaux.

Setup est modifié de la manière suivante :

page.10 = HMENU

page.10.1 = TMENU

page.10.1.expAll = 1

page.10.1.NO {

linkWrap = <div style="font-size:1em"> | </div>

}

page.10.2 = TMENU

page.10.2.NO {

linkWrap =<div style="font-size:.7em;padding-left:10px"> | </div>

}

Pour le résultat suivant :

Décryptage :

L'objet page.10.1.wrap est modifié afin d'inclure le niveau de menu dans un div (on pourra également spécifier un class plutot qu'un style).

L'objet page.10.2 est l'object de 2eme niveau (sont comportement est identique au menu 1 mais son formatage diffère (margin-left)).

L'objet page.10.1.expAll: permet de spécifier que l'ensemble des menus de niveau 1 doivent deplier les éléments de niveau 2 qu'ils contiennent. Le comportement par défaut est de ne montrer les éléments de niveau 2 que pour la partie de site dans laquelle on se trouve.

Pour créer des menus présentant des niveau 3, 4 et plus il faudra créer autant de sous objets de page.10 que nécessaire (page.10.3, page.10.4 ...).

Lien vers l'accueil :

On constate que le menu ne permet pas de revenir vers l'accueil. Une astuce rapide consiste à créer une page au même niveau que Menu 1, Menu 2 mais qui sera un simple raccourci vers la page d'accueil.

Pour cela on utilisera une page de type Raccourci pointant vers la page d'accueil.

Il est cependant possible de gérer ce lien directement en Typoscript au moyen de la propriété : .stdWrap.typolink.parameter.data = leveluid:0. Cependant la composition d'un menu de ce type est complexe et dépasse le cadre de ce tutoriel. Ceci utiliserait les objets de type COA du TypoScript.

Propriété des états de menu :

Il exsite d'autres propriétés que NO associées au menus. Notamment les propriétés ACT et RO, respectivement associées aux pages actives et aux rollover.

Les pages actives constituent l'ensemble du chemin depuis la page racine jusqu'à la page dans laquelle on se trouve. Par exemple si nous sommes dans la page Menu.2.2, les pages qui seront dans l'état ACT seront Menu 2, et Menu 2.2.

RO constitue l'état du menu lorsque la souris se trouve sur le ligne du menu. Ceci permet par exemple de changer la couleur d'un lien du menu lorsque le visiteur pose sa souris dessus.

Le menu pourrait être modifié ainsi :

page.10 = HMENU

page.10.1 = TMENU

page.10.1.expAll = 1

page.10.1.NO {

linkWrap = <div style="font-size:1em"> | </div>

}

page.10.1.ACT = 1

page.10.1.ACT < .NO

page.10.1.ACT.linkWrap = <div style="font-size:1em;color:red"> > | </div>

page.10.2 = TMENU

page.10.2.NO {

linkWrap =<div style="font-size:.7em;padding-left:10px"> | </div>

}

page.10.2.ACT = 1

page.10.2.ACT < .NO

page.10.2.ACT.linkWrap = <div style="font-size:.7em;color:red;margin-left:10px"> > | </div>

On obtient ainsi :

Voici ainsi posées les bases des menus sous Typo3.

Concernant la présentation et l'aspect des menus, il est recommandé d'utiliser les feuilles de style CSS qui devraient normalement être définies avec la maquette HTML du site.

Concernant les types de menus spéciaux existants, nous vous recommandons la lecture du chapitre HMENU du manuel TSREF. Vous y apprendrez à créer des menus listant les sous-pages d'une page dont vous spécifierez le numéro. Vous pourrez également apprendre à créer un menu de type précédent suivant permettant de parcourir un chapitre (un ensemble de pages d'un même niveau). Vous pourrez également créer des menus chemins du type « Mon > Parcours > au > sein > du > site ».

Il existe également des menus autres que les menus textuels comme les GMENU (menus d'images) ou les MENULAYER (menus déroulants de type menu d'application). Cependant, la logique exposée pour les menus textuels continue à s'appliquer pour ces menus là. De plus, ils mettent en oeuvre des mécanismes complexes (notamment GFIBUILDER) qui font appel à du TypoSCript dépassant le cadre de ce tutoriel.

Menus en Typo3 - 5

© Jean-Gaël Rouchon - 2005

Menus en Typo3

Gestion des Menus sous Typo3

Typo3 Menus

Jean-Gaël Rouchon

2003-08-26T14:25:39

Jean-Gael Rouchon