Les avertissements suivants se sont produits :
Warning [2] Undefined array key 0 - Line: 1640 - File: showthread.php PHP 8.2.18 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php 1640 errorHandler->error_callback
/showthread.php 915 buildtree




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[résolu]Menus. gabarits perso ?
#4
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.

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


Messages dans ce sujet

Atteindre :


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