12/11/2012, 13:10:54
Voilà le dernier code plus abouti avec gestion des title et tooltips
J'ai tenté d'user de variables le plus possible, ca me gêne de faire des appels à l'api ($node->trucmachin) X fois quand une seule fois suffit.
J'ai tenté d'user de variables le plus possible, ca me gêne de faire des appels à l'api ($node->trucmachin) X fois quand une seule fois suffit.
Code :
[== Indéfini ==]
{assign "class" ""}{* on assigne une valeur quelquonque à $class voir smarty : http://www.smarty.net/docs/en/language.function.assign.tpl *}
{assign var='number_of_levels' value=10000}
{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>
<!-- 1er niveau de menu ds son ul -->
<ul class="nav">
{foreach $nodelist as $node}{* raccourci d'écriture : voir smarty : http://www.smarty.net/docs/en/language.function.foreach.tpl *}
{assign "niv" $node->depth}
{assign "title" $node->pagetitle}
{assign "Description" $node->titleattribute}
{if $description == ""}
{assign var="Titre" value="`$title` "}
{else}
{assign var="Titre" value="`$title`, ` -` `$Description` "}
{/if}
{if $niv > $node->prevdepth}{* on est au moins ul>ul node->depth*}
{if $niv > 2}
{* si on est ul>ul>ul ou + on met .sub-menu dessus *}
{repeat string='<ul class="dropdown-menu sub-menu">' times=$node->depth-$node->prevdepth}
{else} {* on est ul>ul *}
{repeat string='<ul class="dropdown-menu">' times=$node->depth-$node->prevdepth}
{/if}
{elseif $niv < $node->prevdepth}{* si on descend de niveau *}
{repeat string='</li></ul>' times=$node->prevdepth-$node->depth}
{elseif $node->index > 0}</li>
{/if}
{if $node->first == true}{* si on est sur le 1er élément d'un niveau, on concatène $class avec 'first' *}
{capture class assign=class}{$class|cat:" first"}{/capture}
{/if}
{if $node->last == true}{* si on est sur le dernier élément d'un niveau, on concatène $class avec 'last' voir smarty : http://www.smarty.net/docs/en/language.modifier.cat.tpl ET http://www.smarty.net/docs/en/language.function.capture.tpl*}
{capture class assign=class}{$class|cat:" last"}{/capture}
{/if}
{if $node->haschildren == true and $node->type != 'sectionheader' and $node->type != 'separator'}
{capture class assign=class}{$class|cat:" haschildren dropdown"}{/capture}
<li class='{$class}'><a rel="tooltip" href="{$node->url}" data-toggle="dropdown" title="{$Titre}">{$node->menutext} <b></b></a>
{elseif $node->type == 'sectionheader'}
<li class='{$class}'><a rel="tooltip" href="{$node->url}" data-toggle="dropdown" title="{$Titre}">{$node->menutext} <b></b></a>
{else}
<li class='{$class}'><a rel="tooltip" href="{$node->url}" title="{$Titre}">{$node->menutext}</a>
{/if}
{assign "class" ""}{* important : on réinitialise $class pour l'élément suivant *}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}
</li>
</ul></div></div></nav>{/if}