Forum CMS Made Simple FR
Menu - Affichage de certains éléments - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : Menu - Affichage de certains éléments (/thread-2309.html)



Menu - Affichage de certains éléments - scorman - 24/10/2012

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.2.1
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

J'avoue avoir beaucoup de mal à trouver le code permettant de réaliser ceci avec mon menu ..

En gros, mon hiérarchie de pages

-FR
-- Item 1
-- Item 2
--- Item 2.1
-- Item 3
---Item 3.1
--- Item 3.2
-- Item 4

Je cherche à afficher dans le menu principal ceci : ITEM 1 | ITEM 2 | ITEM 3 | ITEM 4

et mon code permet d'afficher un sous-menu au survol. Seulement je voudrais n'avoir que le sous-menu de l'item 3...

Comment puis-je lui dire de ne gèrer que celui de l'item 3?


Merci !


Menu - Affichage de certains éléments - scorman - 24/10/2012

En gros, voici ce que je cherche à faire ...

Code :
[== Indéfini ==]
<ul id="nav">
{foreach from=$nodelist item=node}
{if $node->depth <=1}
<li {if $node->alias =="home"}class="home"{/if}><a href="{$node->url}">{$node->menutext}</a>
{/if}

{if $node->alias == "coaching-sportif"}
<ul class="dropdown">
     {foreach  "Enfant de coaching sportif"}
         <li><a href="lien de l'enfant">NOM ENFANT COACHING SPORTIF<a></li>
     {/foreach}
</ul>
{/if}

{/foreach}
</li>
</ul>


Mais je ne sais pas ciomment récupérer les enfants de "coaching-sportif" ...


Merci Smile


Menu - Affichage de certains éléments - Jean le Chauve - 24/10/2012

Et ton 2.1, qu'en est-il ? Va-t-il être affiché dans un menu ?
Si non, tu n'as qu'à mettre le 2.1 en non visible dans le menu (options page) et conserver le gabarit menu par défaut.


Menu - Affichage de certains éléments - scorman - 25/10/2012

Oui, je l'affiche dans un sous-menu placé ailleurs..


Menu - Affichage de certains éléments - heriquet - 25/10/2012

Si vraiment ce n'est qu'une question de visibilité, au risque de dire une betise, ne pourrais-tu pas simplement masquer certaines branches de ton menu avec du CSS ? Comme ca les liens restent visibles pour les robots.


Menu - Affichage de certains éléments - Jean le Chauve - 25/10/2012

En considérant que tu ne souhaites afficher que les enfants de 2 (code à modifier où tu vois $node->hierarchy si tu changes de n° de hiérarchie)
Code :
{strip}
{if $count > 0}
    <ul id='nav'>
    {foreach from=$nodelist item=node}
        {if $node->depth > $node->prevdepth && $node->hierarchy >= 2 && $node->hierarchy < 3}
            {repeat string='<ul class="dropdown">' times=$node->depth-$node->prevdepth}
        {elseif $node->depth < $node->prevdepth && $node->hierarchy == 3}
            {repeat string='</li></ul>' times=$node->prevdepth-$node->depth}
            </li>
        {elseif $node->index > 0 && $node->depth == 1 or ($node->hierarchy >= 2 && $node->hierarchy < 3)}
            </li>
        {/if}
        {if $node->current == true && $node->depth == 1}
            <li{if $node->parent == true || $node->haschildren == true} class='parent current'{/if}>
                <a href='{$node->url}' class='current'{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}</a>
        {elseif $node->parent == true && ($node->type != 'sectionheader' || $node->type != 'separator')}
            <li class='parent current'>
                <a href='{$node->url}' class='current'{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}</a>
        {elseif $node->type == 'sectionheader'}
            <li class='sectionheader'>
                {$node->menutext}
        {elseif $node->type == 'separator'}
            <li class='separator'>
                <hr class='separator' />
        {elseif $node->depth == 1 or ($node->hierarchy >= 2 && $node->hierarchy < 3)}
            <li{if $node->parent == true || $node->haschildren == true} class='parent'{/if}>
                <a href='{$node->url}'{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}</a>
        {/if}
    {/foreach}
{repeat string='</li></ul>' times=$node->depth-1}</li>
    </ul>
{/if}
{/strip}
Visible ici pour quelques heures : http://www.tutos-pour-cmsmadesimple.be/

[edit] : en relisant ta demande, je vois que ce sont les enfants de 3 dont tu as besoin : modifies tous les '2' en '3' et '3' en '4' où tu vois "$node->hierarchy"


Menu - Affichage de certains éléments - Loulac - 25/10/2012

Bonjour,
S'il y a juste la page Item 2.1 à masquer dans le menu pourquoi ne pas utiliser le paramètre 'excludeprefix' avec le tag qui appelle ton menu ?


Menu - Affichage de certains éléments - Jean le Chauve - 25/10/2012

Tu as raison, mais il devra modifier la balise à chaque fois que l'utilisateur ajoutera une page enfant quelque part, ce qui me semble difficile.


Menu - Affichage de certains éléments - Jean le Chauve - 27/10/2012

Résolu ?