Template de menu

Support en français pour CMS Made Simple.

Moderator: jce76350

Post Reply
Xarkam
Forum Members
Forum Members
Posts: 22
Joined: Wed Sep 02, 2009 7:51 am

Template de menu

Post by Xarkam »

Bonjour, je suis actuellement occupé à codé un gabarit de menu pour avoir une génération de liste dans ce sens:

Code: Select all

<ul>
    <li><a>lien menu principale</a></li>
</ul>
<ul>
    <li><a>Lien menu principale</a>
    <ul>
        <li><a>Lien Sous menu</a>
        <li><a>Lien Sous menu</a>
    </ul>
    </li>
</ul>
<ul>
    <li><a>lien menu principale</a></li>
</ul>
Le code que j'ai repris et modifié me donne presque le rendu voulu, mais il me manque le fermant pour la partie menu principale.
J'avoue ne pas trouver ou placer le fermant pour chaque liste principale.
Ca me génère ce html

Code: Select all

<ul>
    <li><a>lien menu principale</a></li>
<ul>
    <li><a>Lien menu principale</a>
    <ul>
        <li><a>Lien Sous menu</a>
        <li><a>Lien Sous menu</a>
    </ul>
    </li>
<ul>
    <li><a>lien menu principale</a></li>
Voici le code

Code: Select all

{if $count > 0}
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string='<ul id="sub-nav" style="display:inline;">' times=$node->depth-$node->prevdepth}
		<li style="display: inline;"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}>{$node->menutext}</a></li>
		{elseif $node->depth < $node->prevdepth}
            {repeat string="</li></ul></li></ul>" times=$node->prevdepth-$node->depth}
        {elseif $node->index > 0}</li>
        {elseif $node->depth == 1}</ul>
        {/if}
        {if $node->depth == 1}
        <ul><li><a
        {else}
        <li><a {/if}{if $node->type != 'sectionheader' and $node->type != 'separator'}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}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>
{elseif $node->type == 'sectionheader'}><dfn>{$node->hierarchy}: </dfn>{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
	</ul>
{/if}
Si quelqu'un à une idée.

Merci.
Last edited by Xarkam on Fri Sep 18, 2009 12:49 pm, edited 1 time in total.
Pierre M.

Re: Template de menu

Post by Pierre M. »

Xarkam wrote: ...Le code que j'ai repris et modifié me donne presque le rendu voulu, mais il me manque le fermant pour la partie menu principale.
J'avoue ne pas trouver ou placer le fermant pour chaque liste principale...
Le code "repris" place-t-il bien ce ? Si oui, vous savez où vous avez enlevé le nécessaire par votre modification, non ?

Pierre M.
Xarkam
Forum Members
Forum Members
Posts: 22
Joined: Wed Sep 02, 2009 7:51 am

Re: Template de menu

Post by Xarkam »

Bonjour, oui le code repris place bien le mais comme ceci:

Code: Select all

<ul id="primary-nav">
     <li>menu item 1</li>
     <li>menu item 2</li>
     <li>menu item 3</li>
     <li>menu item 4</li>
</ul>
Jean le Chauve

Re: Template de menu

Post by Jean le Chauve »

Xarkam wrote: Bonjour, oui le code repris place bien le mais comme ceci:

Code: Select all

<ul id="primary-nav">
     <li>menu item 1</li>
     <li>menu item 2</li>
     <li>menu item 3</li>
     <li>menu item 4</li>
</ul>
Bin, c'est correct. Tu dois plutôt regarder lorsque tu es sur une page enfant.
Tu as plutôt un problème de savoir comment on imbrique une sous liste.
Voilà ce que tu voudrais

Code: Select all

<ul>
    <li><a>lien menu principale</a></li>
</ul>
<ul>
    <li><a>Lien menu principale</a>
    <ul>
        <li><a>Lien Sous menu</a>
        <li><a>Lien Sous menu</a>
    </ul>
    </li>
</ul>
<ul>
    <li><a>lien menu principale</a></li>
</ul>
Il manque des fermetures
Voici le code correct :

Code: Select all

<ul>
    <li><a>lien menu principale</a></li>
</ul>
<ul>
    <li><a>Lien menu principale</a>
    <ul>
        <li><a>Lien Sous menu</a></li>
        <li><a>Lien Sous menu</a></li>
    </ul>
    </li>
</ul>
<ul>
    <li><a>lien menu principale</a></li>
</ul>
Xarkam
Forum Members
Forum Members
Posts: 22
Joined: Wed Sep 02, 2009 7:51 am

Re: Template de menu

Post by Xarkam »

En fait j'ai du mal à comprendre comment fonctionne la génération des listes.
je vais à tâtons mais pas facile.

Je vais reprendre le dev dans quelque jours et je regarde ca.
Xarkam
Forum Members
Forum Members
Posts: 22
Joined: Wed Sep 02, 2009 7:51 am

Re: Template de menu

Post by Xarkam »

Bonjour, après un arrêt de 3 mois, j'ai repris le dev de mon template de menu.
j'ai très bien avancé car j'ai le rendu voulu à un détail prêt que je n'arrive pas à résoudre et ce malgré le sujet que j'ai trouvé sur ce forum (http://forum.cmsmadesimple.org/index.php?topic=38483.0).

J'ai donc mon menu principale avec des sous menu pour chaque item du menu.
Mon soucis c'est que j'aimerais bien définir une classe différente pour le dernier item de chaque sous menu.

Je vous met mon code histoire de vous rendre compte de mon avancée dans la compréhension de la génération des menu dans cmsms.

Code: Select all

{if $count > 0}
<!-- MENU START -->
<div class="menu">
<ul>

{* DEBUT DE BOUCLE *}
{foreach from=$nodelist item=node name='menu'} 
  {assign var='last' value='second'}
  {if $smarty.foreach.menu.last and $node->depth > $node->prevdepth}
    {assign var='last' value='lastsecond'}
  {/if}
  {if $node->depth > $node->prevdepth}
    {repeat string="<!--[if lte IE 6]><table><tr><td><![endif]-->
    <ul>" times=$node->depth-$node->prevdepth} {* UL Ovrant pour les sous menu *}
  {elseif $node->depth < $node->prevdepth}
    {repeat string="</ul>" times=$node->prevdepth-$node->depth} {* UL Fermant pour les sous menu *}
    <!--[if lte IE 6]></td></tr></table></a><![endif]-->
    </li>
  {elseif $node->index > 0}
    </li>
  {/if}

  {assign var='last2' value='first'}
  {if $node->extra1 == '1'}
    {assign var='last2' value='firstorange'}
  {/if}

  {if $node->parent == true}
    <li class="{$last2}"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}><b>{$node->menutext}</b><!--[if gte IE 7]><!--></a><!--<![endif]-->
  {elseif $node->type == 'sectionheader'}
    <li class="{$last2}"><a href="javascript:void(0)"><b>{$node->menutext}</b><!--[if gte IE 7]><!--></a><!--<![endif]-->
  {elseif $node->type == 'separator'}
    <li style="list-style-type: none;"> <hr class="separator" />
  {elseif $smarty.foreach.menu.last == true}
    <li class="firstred"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}><b>{$node->menutext}</b></a></li>
  {else}
    <li class="{$last}"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}><div class="border">{$node->menutext}</div></a>
  {/if}
{/foreach}
{* FIN DE BOUCLE *}

{repeat string="</ul><!--[if lte IE 6]></td></tr></table></a><![endif]-->" times=$node->depth-1}</li>
</ul>
</div>
{/if}
<!-- MENU END -->
Donc, j'en suis là et je doit dire que je bloque sur cette histoire de dernier élément de sous menu.
Alors, si vous avec une solution, je suis preneur.

Merci.
Post Reply

Return to “French - Français”