Forums de la communauté francophone du CMS TYPO3: Affichage D'un Menu Hmenu/tmenu Sous Condition - Forums de la communauté francophone du CMS TYPO3

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Affichage D'un Menu Hmenu/tmenu Sous Condition

#1 L'utilisateur est hors-ligne   Frank77 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 12
  • Inscrit(e) : 25-septembre 07

Posté 02 février 2012 à 11:47

Bonjour,

je voudrais construire un menu horizontal avec des onglets qui affichent seulement un niveau de l'arborescence quand on passe la souris dessus (rollover).
Sauf pour un onglet particulier qui afficherait deux niveaux.
Je n'arrive pas à faire cette exception. Pouvez-vous m'aider s'il vous plaît ? Merci d'avance pour votre expertise typoscript

Voici une illustration de ce que je souhaite avoir.
onglet1   			onglet2        	onglet3...
|----page1.1    	|----page2.1 			
|----page1.2    	|----page2.2 			
|----page1.3 		 	|----page2.2.1	
|----page1.4 		 	|----page2.2.2	
|----page1.5    	|----page2.3 			
                            	|----page2.3.1
                      	|----page2.4


Dans mon exemple, je voudrais que l'onglet2 (dont l'id est 236) affiche deux niveaux dans le menu alors que les autres onglets n'affichent qu'un seul niveau.
La condition serait alors: j'affiche un niveau pour tous les onglets sauf pour l'onglet2 (id 236) qui affiche deux niveaux.


comment puis-je modifier le typoscript que j'utilise qui affiche seulement un niveau ?
voici le script :
## ## ## ## ## ## ## ## ## ##
## Menu horizontal haut
lib.menuSCP = HMENU
lib.menuSCP.wrap=<ul id="menuprincipal">|</ul>
lib.menuSCP.special = list
lib.menuSCP.special.value = 238,235,236,234,242,233

//niveau 0 qui correspond aux onglets du menu
lib.menuSCP.1=TMENU
lib.menuSCP.1 {
expAll=1
noBlur=1
}
// ici on a 6 items / 6 wrappers differents
lib.menuSCP.1.NO {
wrapItemAndSub=<li>|</li> || <li>|</li> || <li>|</li> || <li>|</li> || <li>|</li>||<li class="dernier">|f</li>
stdWrap.htmlSpecialChars=1
stdWrap.field=title
}
// on gère la position active (valable pour le niv 0 sélectionné ou une des pages en dessous) :
lib.menuSCP.1.ACT=1
lib.menuSCP.1.ACT.wrapItemAndSub=<li class="premier act">|</li> || <li class="deuxieme act">|</li> || <li class="troisieme act">|</li> || <li class="quatrieme act">|</li> || <li class="cinquieme act">|</li> || <li class="dernier act">|</li>
lib.menuSCP.1.ACT.stdWrap.field=title
lib.menuSCP.1.ACT.stdWrap.htmlSpecialChars=1

// 1er niveau qui apparait quand la souris passe sur les onglets du menu
lib.menuSCP.2=TMENU
lib.menuSCP.2{
noBlur=1
wrap=<ul>|</ul>
}

lib.menuSCP.2.NO.allWrap=<li>|</li>
lib.menuSCP.2.NO.stdWrap.field=title

## ## ## ## ## ## ## ##
Encore Merci pour votre aide.

Ce message a été modifié par Frank77 - 02 février 2012 à 11:52.

0

#2 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 659
  • Inscrit(e) : 26-juin 09

Posté 02 février 2012 à 20:05

Bonjour,

Je ne crois pas qu'il soit possible de ne prendre en compte les sous niveaux que dans une seule branche précise.

Par contre il existe des "contournements" :

  • Faire un menu normal et mettre les pages des autres branches en "hors menu" pour ne pas les faire afficher
  • Passer par une fonction PHP pour générer la liste des pages, du coup on peut choisir quelles pages sont affiche.
  • Découper le menu global en plusieurs menu mis cote à cote, et en gros faire 1 menu par onglet. Du coup on peut spécifier pour chaque menu (chaque onglet) le nombre de sous niveau qu'on affiche.

N'hésite pas à nous dire quelle solution tu auras choisi.

OlivierSC
0

#3 L'utilisateur est hors-ligne   Oom Paul 

  • Le bucheron bucheronant
  • PipPipPipPipPipPipPip
  • Groupe : Administrateur
  • Messages : 2225
  • Inscrit(e) : 15-février 06

Posté 03 février 2012 à 10:28

+1 pour la 3éme solution.
0

#4 L'utilisateur est hors-ligne   Frank77 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 12
  • Inscrit(e) : 25-septembre 07

Posté 03 février 2012 à 11:02

Merci pour vos réponses, ca me rassure que ce ne soit pas si trivial que ca en typoscript.
Je pensais que ca l'était et que je ne connaissais pas suffisament les conditions en typoscript.

La solution 3 me paraît bien aussi.
Si j'ai bien compris, cela implique que je touche au gabarit HTLML pour définir "les menus" et qu'en typoscript je mette autant de HMENU que d'onglets ?
Ce n'est donc pas possible de trouver une soluce rien qu'en typoscript, n'est-ce pas ?
0

#5 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 659
  • Inscrit(e) : 26-juin 09

Posté 03 février 2012 à 11:53

non la solution 3 n'implique pas de toucher au gabarit HTML mais juste au typoscript.

Actuellement, tu as une zone mappée (via templavoila ou en typoscript) avec un objet qui pour le moment est un HMENU.
exemple :
10=HMENU
10....

Il faut transformer cette partie pour mettre en place une collection d'objet, cette collection regroupant des menus dans ton cas
exemple :
10 = COA
10.1=HMENU
10.1.... //tout le code pour le premier menu (le premier onglet)
10.2=HMENU
10.2.... //tout le code pour le second menu (le second onglet)
10.2.....// ce 2nd menu doit afficher plus de niveau de profondeur que les autres
10.3=HMENU
10.3.... //tout le code pour le troisième menu (le troisième onglet)

Le COA est un tableau d'objet.
Les 10.1, 10.2 et 10.3 sont les menus pour chacune des branches.
0

#6 L'utilisateur est hors-ligne   Popy 

  • Star modeste
  • PipPipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 3228
  • Inscrit(e) : 11-avril 06

Posté 03 février 2012 à 12:09

+1 pour la solution 1, perso.
Expert Typo3
0

#7 L'utilisateur est hors-ligne   Frank77 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 12
  • Inscrit(e) : 25-septembre 07

Posté 03 février 2012 à 18:17

Yes ! :-)
Merci Maître Jedi OlivierSC ! c'est la logique qui me manquait. Je vais la tester la semaine prochaine.
Ca m'a l'air bien parti pour résoudre mon problème qui consistait à pouvoir faire une exception sur un onglet de menu.
sans toi, j'aurais trifouillé mon template html pour mapper plein de <ul> en HMENU.

Popy, concernant la solution 1, elle est pas mal, sauf qu'à d'autres endroits les autres branches doivent apparaitre dans un menu. donc cette solution ne me convient pas totalement.

Bref, merci encore à tous pour vos aiguillages et précieux conseils.
Je vous tiens au courant next week sur le résultat.

En attendant, bon week end (frisqué... !! )

Frank le padawan
0

#8 L'utilisateur est hors-ligne   rakel 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 926
  • Inscrit(e) : 30-septembre 05

Posté 06 février 2012 à 17:04

la solution d'Olivier est effectivement la plus clean et la plus agréable à maintenir à long terme !
sinon, pour des cas encore plus tordus où le webmaster voudrait exclure certaines pages de l'affichage d'un menu, sans qu'il n'y ait de logique particulière à cela il existe l'arme ultime du HMENU :
excludeUidList = 34,2,current

on lui met cette liste dans une constante facile à éditer et le tour est joué.
0

#9 L'utilisateur est hors-ligne   Frank77 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 12
  • Inscrit(e) : 25-septembre 07

Posté 09 février 2012 à 12:33

Bonjour,
j'ai appliqué la soluce d'Olivier, et ça marche nickel.
Merci à tous pour vos conseils.
Merci rakel pour ton astuce, j'y penserais si besoin.
Le sujet peut être clos.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)