Afficher le sous-menu relatif à la page courante ?

Support en français pour CMS Made Simple.

Moderator: jce76350

Post Reply
User avatar
lila
New Member
New Member
Posts: 9
Joined: Sun Jul 15, 2007 4:44 pm

Afficher le sous-menu relatif à la page courante ?

Post 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 !
Pierre M.

Re: Afficher le sous-menu relatif à la page courante ?

Post 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.
athena_pallas
Power Poster
Power Poster
Posts: 272
Joined: Wed Sep 13, 2006 4:41 pm

Re: Afficher le sous-menu relatif à la page courante ?

Post 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}

User avatar
lila
New Member
New Member
Posts: 9
Joined: Sun Jul 15, 2007 4:44 pm

Re: Afficher le sous-menu relatif à la page courante ?

Post 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à  :D
User avatar
lila
New Member
New Member
Posts: 9
Joined: Sun Jul 15, 2007 4:44 pm

Re: Afficher le sous-menu relatif à la page courante ?

Post 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 !  :)
Pierre M.

Re: Afficher le sous-menu relatif à la page courante ?

Post 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.
User avatar
wapcamer
Forum Members
Forum Members
Posts: 83
Joined: Thu Aug 09, 2007 12:10 am

Re: Afficher le sous-menu relatif à la page courante ?

Post 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.
Post Reply

Return to “French - Français”