Page 1 of 1
Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 12:00 pm
by lila
Bonjour tout le monde,
alors voilà j'ai un nouveau problème : j'aimerais afficher automatiquement le niveau de menu qui correspond à la page courante (et seulement ce niveau).
J'y arrive manuellement avec ce code :
Code: Select all
{cms_module module='menumanager' template='menu_gauche' start_element='2.2.1' show_all='1' show_root_siblings="1"
mais il faudrait que je l'intègre au gabarit et donc qu'il recupère automatiquement dans "start_element" le bon niveau selon la page où on se trouve...
J'ai beau chercher, je n'arrive pas à trouver...
Quelqu'un sait comment faire ?
Ps : je suis pas sûre d'être très claire dans mon expliquation

, si c'est le cas dîtes le moi !
Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 12:36 pm
by Pierre M.
Bonjour Lila,
Votre explication est limpide. Je n'ai pas de réponse, juste un complément de question : ce serait bien si on pouvait écrire start_element='currentpage'.
Si vous lisez l'Anglais, j'ai vu passer dans le forum anglophone des indications pour imbriquer des tags Smarty, donc potentiellement une solution pour générer 'currentpage' dans {menu}.
Pierre M.
Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 2:01 pm
by athena_pallas
Salut, voilà ce que j'ai fait pour un de mes projets.
C'est pas nickel quand on arrive au dernier niveau, mais bon... Ca répond au cahier des charges.
---------------------------------------->A mettre dans le gabarit (des pages internes dans mon cas)
Code: Select all
{hierarchy}
{cms_module module='menumanager' start_element=$h_this template='menu-lateral' collapse='0'}
{hierarchy}
{menu template="menu-lateral" start_level=$h_this number_of_levels="1"}
----------------------------------------> Template de mon menu-lateral
Code: Select all
{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->current == true}
{* *}
<li>{$node->menutext}
{elseif $node->parent == true}
<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}
>
{$node->menutext}
</a>
{elseif $node->type == 'sectionheader'}
<li >{$node->menutext}
{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />
{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 != ''} target="{$node->target}"{/if}>{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 2:06 pm
by lila
Bonjour Pierre,
merci de m'avoir répondu
j'ai trouvé la solution sur cette page (en anglais) qui donne pas mal d'astuces pour les menus :
http://wiki.cmsmadesimple.org/index.php/User_Handbook/Admin_Panel/Layout/Menu_Manager
ça n'a pas été facile de s'y retrouver (l'anglais c'est vraiment pas mon point fort

) mais j'ai fini par y arriver.
Pour ceux que ça intéresse, voilà comment faire :
- créer un nouveau Tag Utilisateur appelé "hierarchy" contenant ce code :
global $gCms;
$pos = $gCms->variables['position'];
$base = explode('.', $pos);
$smarty->assign('h_toplevel', $base[0] * 1);
$smarty->assign('h_parent', $base[ (count($base) > 1) ? count($base)-2 : 0 ] * 1);
$smarty->assign('h_this', $base[count($base)-1] * 1);
Ce Tag permet de récupérer le niveau de la page courante.
- Ensuite, pour afficher le menu, copier ce code dans le gabarit (sans oublier de changer "nom_template_menu" par le nom de votre template) :
{hierarchy}
{cms_module module='menumanager' start_element=$h_toplevel template='nom_template_menu' collapse='0'}
et voilà

Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 2:11 pm
by lila
Salut athena_pallas, désolée je n'avais pas vu ta réponse !
Ca a l'air de ressembler à ce que j'ai trouvé.
En tout cas merci de m'avoir répondu !

Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 3:35 pm
by Pierre M.
Merci Lila.
Au passage : tout le monde peut écrire dans le wiki avec son accès forum, donc traduire les pages trouvées en créant les traductions :
http://wiki.cmsmadesimple.org/index.php ... Manager/fr
Pierre M.
Re: Afficher le sous-menu relatif à la page courante ?
Posted: Tue Aug 14, 2007 8:57 pm
by wapcamer
Bon lien,
c'est clair que c'est pas du luxe d'avoir la page traduite, car même moi qui comprend en général bien l'anglais technique, j'ai vraiment eu du mal avec la page sur les menus de la doc.