09/11/2012, 17:39:10
Bon je crois avoir trouvé.
C'est un peu embêtant de devoir mettre les mains ds le cambouis de smarty pour faire de simple personnalisation.
En même temps,c 'est aussi vrai qu'il n'est pas nécessaire de faire du php du coup..
Mais globalement, je trouve qu'il manque un menu manager digne de ce nom. pour décider simplement des classes souhaitées, des structures des tpl (notamment en fonction des sous niveaux)...Vision d'un débutant..
(Les habitués de MS pourraient découvrir ModX, ils seraient surement opérationnels très vite...et trouveraient ca fachement + simple...)
bref :
voilà mon menu tpl.
reste à gérer une class .last-menu-item . Là ca marche sur tous les derniers li SAUF les li de 1er niveau.
Comprends pas.
Merci
C'est un peu embêtant de devoir mettre les mains ds le cambouis de smarty pour faire de simple personnalisation.
En même temps,c 'est aussi vrai qu'il n'est pas nécessaire de faire du php du coup..
Mais globalement, je trouve qu'il manque un menu manager digne de ce nom. pour décider simplement des classes souhaitées, des structures des tpl (notamment en fonction des sous niveaux)...Vision d'un débutant..
(Les habitués de MS pourraient découvrir ModX, ils seraient surement opérationnels très vite...et trouveraient ca fachement + simple...)
bref :
voilà mon menu tpl.
Code :
[== Indéfini ==]
{* port Bootstrap nav http://berkhamsted-web-design.co.uk/2012/07/cmsms-menus-and-twitter-bootstrap/
ok for full top horizontal nav bar 2 sous niveaux.
*}
{assign var='number_of_levels' value=10000}
{assign var='level_class' value='dropdown-menu sub-menu'}
{if isset($menuparams.number_of_levels)}
{assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}
{if $count > 0}
<nav class="navbar navbar-fixed-top" id="menutop">
<div class="navbar-inner">
<div class="container">
<h1 class="brand" >
Nom du projet
</h1>
<ul class="nav">
{foreach from=$nodelist item=node name=menuitem}
{if $node->depth > $node->prevdepth}
{if $node->depth == 3} {* si on est ul>ul>ul on met .sub-menu dessus *}
{repeat string="<ul class='dropdown-menu sub-menu'>" times=$node->depth-$node->prevdepth}
{else}
{repeat string="<ul class='dropdown-menu'>" times=$node->depth-$node->prevdepth}
{/if}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
{elseif $node->index > 0}</li>
{/if}
{if $node->parent == true}
<li {if $smarty.foreach.menuitem.last} class='last-menu-item'{/if}>
<a href="{$node->url}" data-toggle="dropdown">{$node->menutext} <b></b></a>
{elseif $node->haschildren == true and $node->type != 'sectionheader' and $node->type != 'separator'}
<li {if $smarty.foreach.menuitem.last} class='last-menu-item dropdown'
{else}class='dropdown'{/if}><a href="{$node->url}" data-toggle="dropdown">{$node->menutext} <b></b></a>
{elseif $node->current == true}
<li {if $smarty.foreach.menuitem.last} class='last-menu-item'{/if}><a href="{$node->url}">{$node->menutext}</a>
{elseif $node->type == 'sectionheader'}
<li {if $smarty.foreach.menuitem.last} class='last-menu-item'{/if}><a href="{$node->url}" data-toggle="dropdown">{$node->menutext} <b></b></a>
{else}
<li {if $smarty.foreach.menuitem.last} class='last-menu-item'{/if}><a href="{$node->url}">{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
</div></div></nav>
{/if}
reste à gérer une class .last-menu-item . Là ca marche sur tous les derniers li SAUF les li de 1er niveau.
Comprends pas.
Merci