Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Résolu] Menu vertical qui ne réagit pas comme je le voudrais
#1

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.8.2
#~ Nom de l'hébergeur : Ovh
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.8.2
#~ Installed Modules:
#~ * FCKeditorX: 1.0 RC1
#~ * MenuManager: 1.6.5
#~ * News: 2.10.6
#~ * ThemeManager: 1.1.1
#~ * Search: 1.6.5
#~ * FileManager: 1.0.2
#~ * Printing: 1.1.0
#~ * nuSOAP: 1.0.2
#~ * ModuleManager: 1.4
#~ * CGExtensions: 1.20
#~ * CGFeedMaker: 1.0.11
#~ * TinyMCE: 2.7.3
#~ * CMSMailer: 2.0
#~ * CustomContent: 1.7.3
#~ * CGExtensions: 1.20
#~ * CMSMailer: 2.0
#~ * FrontEndUsers: 1.12.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 2000000
#~ * default_upload_permission: 664
#~ * url_rewriting: internal
#~ * page_extension:
#~ * query_var: page
#~ * use_hierarchy: true
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: false
#~ Php Information:
#~ * phpversion: 5.2.14
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 128M
#~ * max_execution_time: 30
#~ * output_buffering: On
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 64M
#~ * upload_max_filesize: 64M
#~ * session_save_path: /tmp (1777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: cgi
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.90
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~

Bonjour la team Smile

J'ai un souci sur lequel je coince et pour lequel j'aurais besoin de votre aide.

La question bien que semblant toute simple me pose problème ne maitrisant pas bien le fonctionnement des templates.

J'aimerais que dans le menu vertical de notre site les sous rubriques s'affichent uniquement lorsqu'on clique sur un sujet

Exemple :

Le menu de base serait :

- Voiture
- Camion
- Bateau

Lorsque je cliquerais sur Camion çà donnerait :

-Voiture
-Camion
-Gros
- > 5000 euros
- Entre 5000 euros et 10 000 euros
-Moyen
-Petit
- Bateau

Et ainsi de suite tant que çà n'affiche que ce qui est sélectionné et non toute l'arborescence complète (ce que j'ai pour l'instant)...

Voici une copie de mon simple_navigation.tpl pour info :

Citation :{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *}

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}


{if $node->parent == true or ($node->current == true and $node->haschildren == true)}
<li class="menuactive menuparent"><a class="menuactive menuparent" href="{$node->url}"><span>{$node->menutext}</span></a>

{elseif $node->haschildren == true and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="parent"><a class="parent" href="{$node->url}"><span>{$node->menutext}</span></a>

{elseif $node->current == true}
<li class="currentpage"><h3><span>{$node->menutext}</span></h3>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><span>{$node->menutext}</span>

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

Et ici le template appliqué aux puces pour l'affichage vertical du menu (<ul id = "subNav">)

Citation :{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page. Used both for the horizontal main menu and the top level in the vertical submenu.
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. Also used for the horizontal <ul> to use the entire width of the block element that it is wrapped in. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
hr.separator - To style the ruler for the separator *}
{if $count > 0}
<ul id="homeNav" class="clearfix">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}

{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if $node->current == true && $node->depth == 1}
<li class="active0{$node->depth}"><a href="">{$node->menutext}</a>
{elseif $node->current == true && $node->depth > 1}
<li class="active0{$node->depth-1}"><a href="">{$node->menutext}</a>
{elseif $node->parent == true && (($node->depth == 1) or ($node->depth == 2))}
<li class="activeparent"><a href="{$node->url}" {if $node->accesskey != ''}accesskey="{$node->accesskey}" {/if}{if $node->tabindex != ''}tabindex="{$node->tabindex}" {/if}{if $node->titleattribute != ''}title="{$node->titleattribute}"{/if}{if $node->target ne ""} target="{$node->target}"{/if}>{$node->menutext}</a>{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><a href="">{$node->menutext}</a>{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"><hr class="clearfix" />
{else}
<li><a href="{$node->url}" {if $node->accesskey != ''}accesskey="{$node->accesskey}" {/if}{if $node->tabindex != ''}tabindex="{$node->tabindex}" {/if}{if $node->titleattribute != ''}title="{$node->titleattribute}"{/if}{if $node->target ne ""} target="{$node->target}"{/if}>{$node->menutext}</a>{/if}
{/foreach}

{repeat string="</li></ul>" times=$node->depth-2}</li>
</ul>
{/if}

Si quelqu'un pense pouvoir m'aider où m'orienter vers une solution qui réponde à mes attentes je serais preneur quitte à simplifier le gabarit si il le faut....

Bonne journée
#2

Bonjour,

Regarde du côté des options du tag {menu}, par exemple :
(optional) collapse="1" - À activer (définir en 1) pour que le menu cache les objets non relatifs à la page sélectionnée.
(optional) childrenof="" - Cette option affichera le menu uniquement des éléments qui sont descendants de l'ID de la page sélectionnée ou de l'alias. par exemple : {menu childrenof=$page_alias} affichera uniquement les enfants de la page courante.

Tu peux aussi jouer avec "start_level". Toutes ces infos sont dans l'aide du gestionnaire de menu
Tiens-nous au courant Wink
#3

Bon...

Tout d'abord merci pour les infos Wink

Malheureusement çà coince quelque part et je ne vois pas où....

La seule solution temporaire que j'ai trouvé permet d'afficher l'intégralité des onglets avec les sous onglets mais ces derniers ne sont pas masqués comme je le voudrais.

Voici une copie du gabarit pour la partie concernée :
Citation :<div id="illu">{sectionimage image_path='http://nom de domaine/uploads/images'}</div>
<ul id = "subNav">
<li>{cms_selflink page='andre' text='andre'}</li>
<li>{cms_selflink page='pierre' text='pierre'}</li>
<li class="pierre">{cms_module module='menumanager' template='simple_navigation.tpl' start_page="pierre" childrenof="pierre" collapse="1"}</li>
<li>{cms_selflink page='jacques' text='jacques'}</li>
<li>{cms_selflink page='antoine' text='antoine'}</li>
<li>{cms_selflink page='julie' text='julie'}</li>
<li>{cms_selflink page='béatrice' text='béatrice'}</li>
<li>{cms_selflink page='frédéric' text='frédéric'}</li>
<li>{cms_selflink page='pierrot' text='pierrot'}</li>
<li>{cms_selflink page='mélissa' text='mélissa'}</li>
<li>{cms_module module='menumanager' template='simple_navigation.tpl' start_page="mélissa" childrenof="mélissa" collapse="1"}</li>
<li>{cms_selflink page='Jean-Luc' text='Jean-Luc'}</li>
<li>{cms_module module='menumanager' template='simple_navigation.tpl' start_page="Jean-Luc" childrenof="Jean-Luc" collapse="1"}</li>
</ul>
</div>

J'ai pris soin de remplacer le nom réel de nos pages par des exemples pour info Wink

J'ai essayé avec un start_level="3" mais si je fais celà en cliquant sur "mélissa" par exemple les sous pages de cette dernière apparaissent également chez "pierre" hors je voudrais ne voir que les siennes et pas les autres (idem si je prends Jean-Luc => çà apparait aussi chez "pierre" (doublons))

Donc que faire pour n'avoir que les sous menus sélectionnés et non les autres....
#4

Une petite question pour ma curiosité : pourquoi avoir crée le menu "à la main" et ne pas avoir utilisé un seul tag {menu} général ?
#5

C'est pour le site du travail donc il nous fallait un menu personnalisé tout simplement Wink

Nous avions fait appel à un consultant à l'époque mais qui a mis la clef sous le paillasson sans nous prévenir et en ne manquant pas de nous laisser en plan avec le cms....

Je viens de faire le test avec ce tag-ci :
{start_level="3" collapse="1"}

Mais si je fais çà les sous menus apparaissent respectivement chez pierre, mélissa et Jean-Luc (des triplés!)

Une idée quitte à revoir le gabarit général ?

Merci :p
#6

Je n'ai plus de triplés mais j'ai tjs ce problème de doublons en faisant çà :

Citation :<li>{cms_selflink page='mélissa' text='mélissa'}</li>
<li>{cms_module module='menumanager' template='simple_navigation.tpl' childrenof="mélissa"}</li>
<li>{cms_selflink page='Jean-Luc' text='Jean-Luc'}</li>
<li>{cms_module module='menumanager' template='simple_navigation.tpl' childrenof="Jean-Luc"}</li>

Mais j'ai toujours le souci que si je clique sur la page "mélissa" où "Jean-Luc" les sous onglets de ces pages s'affichent respectivement chez "pierre" Sad

Ne s'agirait-il pas simplement d'un problème hiérarchique au niveau des pages ?

Elles ont le même parent après vérification qui est "accueil"....

Merci

Edit : J'ai le même souci si je clique sur les sous onglets de mélissa où Jean-Luc j'ai automatiquement ces dernières qui sont reprises chez "pierre" au lieu de ses propres sous onglets Sad
#7

Re

C'est encore moi.....

Personne n'a une idée sur une piste qui pourrait m'aider ?

Je pourrais repartir sur base d'un nouveau menu de navigation vertical si il le faut...moi tant que çà fonctionne c'est tout ce qui compte Wink
#8

Hello,
Désolé, pas eu le temps de revoir... mais je pense qu'il faudrait revoir tout le menu effectivement.
Dès que j'ai un moment je te répond..
#9

Bonjour,

Peut-être que le problème vient tout simplement du fait que tu sembles utiliser les noms de pages plutot que les alias dans :
Code :
start_page="mélissa" childrenof="mélissa"

Essaye de remplacer "mélissa" par ton alias de page (tu le trouvera en survolant le nom de ta page dans la liste des pages, entre parenthèse dans le "title" qui apparaît).
Tu dois avoir ce problème pour mélissa et Jean-luc car les alias sont généralement en minuscules et sans accent (ce qui est le cas de "pierre").

Tiens-moi au courant, a+
#10

Super ta solution préconisée est la bonne Smile

J'ai effectivement bien tout mon menu vertical qui s'affiche comme il le devrait dorénavant et si je clique sur un onglet les sous pages ne s'affichent plus sur l'autre onglet Smile

Néanmoins j'ai toujours un souci relatif à ma requête à savoir comment faire en sorte maintenant que pour trois des onglets concernés les sous onglets ne s'affichent que lorsque le visiteur clique dessus ?

J'ai beau mettre un collapse="1" en plus du start_page="mélissa" childrenof="mélissa" çà n'y change rien....

Merci de ton aide en tout cas on progresse ! Wink
#11

Ok c'est bien si ca avance Smile

Le plus simple serait de refaire tout le menu en passant ton menu personnalisé vers un menu global. En effet, avec un seul menu tu retrouveras ces notions de parents / enfant, et tu pourra pleinement utiliser l'option "collapse".

Là le problème, c'est que dans tous les cas tes sous-menus s'affichent.
Alors tu peux faire un test du type :
Code :
<li>{cms_selflink page='mélissa' text='mélissa'}</li>
{if $page_alias eq 'melissa'}<li>{cms_module module='menumanager' template='simple_navigation.tpl' start_page="mélissa" childrenof="mélissa" collapse="1"}</li>{/if}

> Dans ce cas, le sous-menu ne s'affiche que si on est dans la page d'alias "melissa". Cela dit, dès que tu va aller dans une sous-rubrique, le sous-menu va se refermer car le page alias changera.

Tu peux aussi essayer de mettre toujours "melissa" dans tous les alias de sous-pages et changer la fonction (à vérifier, je n'ai pas testé) :
Code :
<li>{cms_selflink page='mélissa' text='mélissa'}</li>
{if $page_alias|strstr:"melissa"}<li>{cms_module module='menumanager' template='simple_navigation.tpl' start_page="mélissa" childrenof="mélissa" collapse="1"}</li>{/if}

Normalement "{if $page_alias|strstr:"melissa"}" teste si il a la chaine "melissa" est présente dans l'alias de page actuel.

Mais à nouveau, c'est du bricolage et l'idéal serait de revoir tout le menu. Tout dépend cependant si tu as réellement besoin d'un niveau personnalisé comme tu le disais
#12

Merci pour ta réponse rapide Smile

Ta première solution marche nickel donc déjà un tout grand merci pour le code.

Si j'essaye la seconde solution préconisée par contre je coince....

Dans mes sous rubriques du site si j'essaye d'aller modifier l'alias page par page j'obtiens systématiquement le message : " * Cet alias est déjà utilisé par une autre page. Changez "Page alias" dans l'onglet "Options" pour autre chose."

Je vais certainement d'ailleurs être confronté au même problème lorsque je vais devoir passer le site de la boîte en interface privée car j'ai cru comprendre qu'il fallait également utiliser ce système d'alias pour définir les pages qui devront être privée où pas.

Comment s'y prendre dès lors pour définir le même alias pour des sous pages d'une rubrique concernée ?

Pour ce qui est des besoins pour les niveaux personnalisés ils ne concernent que trois onglets sur le menu qui en comporte dix donc je ne pense pas qu'il faille pour autant revoir tout le menu...
#13

Je réagis tout d'abord à ta dernière phrase : la "personnalisation" concerne justement ces sous-menus ? Ou y-a-til une personnalisation à un autre niveau ? Parce que si ce n'est que le menu, il ne s'agit pas d'une personnalisation trop spécifique pour éviter l'utilisation d'une balise {menu} générale.

Sinon, peut-être as-tu essayé de mettre le même alias sur différentes pages ? Dans ce cas, tu ne dois pas mettre "melissa" sur toutes, mais par exemple "melissa", "melissa-presentation", "melissa-contact", ... tu vois ? Il faut juste que la chaine "melissa" soit dedans.

Essaye et tiens-moi au courant,
#14

Un tout tout grand giga merci pour tes éclaircissements tout fonctionne dorénavant impeccablement comme je le voulais Smile

Bravo à l'équipe en place sur votre forum qui a déjà pu m'aider plus d'une fois sur des questions sur lesquels je bloquais en tout cas !!

Pour ce qui est de la personnalisation j'entendais simplement un style qui lui est associé Wink

Je n'aurai donc plus qu'à adapter ma feuille de style le cas échéant pour modifier l'apparence des sous menus si nécessaire.

J'ai adapté les différents alias des pages concernées çà me sera utile pour plus tard Wink

Je t'envoie notre site par Email pour que tu puisses y jeter un oeil si tu le désires.

Bon après-midi je vais bientôt pouvoir m'atteler à l'interface privée Smile

@+
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 4 visiteur(s)