Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[résolu]Menus. gabarits perso ?
#16

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.

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}
Sujet fermé


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)