[Résolu] Menu bootstrap et cmsms 2.0

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: ?
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 2.0
#~ Installed Modules:
#~ AdminSearch: 1.0
#~ CMSContentManager: 1.0
#~ DesignManager: 1.0
#~ FileManager: 1.5
#~ MicroTiny: 2.0
#~ ModuleManager: 2.0
#~ Navigator: 1.0
#~ News: 2.50
#~ Search: 1.50
#~ Config Information:
#~ php_memory_limit:
#~ max_upload_size: 64000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ auto_alias_content: true
#~ locale:
#~ set_names: true
#~ timezone: Europe/Paris
#~ permissive_smarty: false
#~ Php Information:
#~ phpversion: 5.5.12
#~ md5_function: On (Vrai)
#~ json_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ test_file_timedifference:
#~ test_db_timedifference:
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ file_uploads: On (Vrai)
#~ post_max_size: 3M
#~ upload_max_filesize: 64M
#~ session_save_path: D:/wamp/tmp (0777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Performance Information:
#~ allow_browser_cache: Off (Faux)
#~ browser_cache_expiry: 60
#~ php_opcache: Off (Faux)
#~ smarty_cache: Off (Faux)
#~ smarty_compilecheck: Off (Faux)
#~ smarty_cache_udt: Off (Faux)
#~ auto_clear_cache_age: On (Vrai)
#~ Server Information:
#~ Server Api: apache2handler
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.6.17
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ Server Time Diff: Aucune différence de date du système de fichiers trouvées
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,


Je viens de passer mon site responsive en cmsms 2.0

J'utilise bootstrap 3.3.5.

Mon souci se situe au niveau du menu.Etant donné que les choses ont pas mal changé à ce niveau, je sollicite votre aide afin de m'accompagner dans la création de mon menu de navigation.


Chose importante, le site ne comportera qu'un seul point de menu dans lequel se trouvera plusieurs liens vers des ancres. Et oui, le site est en scrolling uniquement.

Nous aurons donc un menu comme ceci :

Navigation
- Accueil (lien vers home page)
- L'entreprise (lien vers ancre id = entreprise)
- Les produits (lien vers ancre id = les-produits)
-.....

Liens vers le site : www.carryall.fr


Voici le Menu template que j'utilisais dans la version 1.12 :



Code :
[== HTML ==]
{strip}

{if $count > 0}

    <ul class='nav navbar-nav navbar-right' role='menu'>
    {* if using cmsms lower then 1.11 change foreach below to {foreach from=$nodelist item='node'} *}
    {foreach $nodelist as $node}
        
        {* if depth is greater then previous we need ul *}
        {if $node->depth > $node->prevdepth}
            {repeat string="<ul class='dropdown-menu' role='menu'>" times=$node->depth-$node->prevdepth}  
        {* if depth is lower then we have to close unordered list *}
        {elseif $node->depth < $node->prevdepth}
            {repeat string='</li></ul>' times=$node->prevdepth-$node->depth}
            </li>
        {elseif $node->index > 0}
            </li>
        {/if}
        
        {* is menu item current? *}
        {if $node->current == true}
        
            <li class='active{if $node->parent == true || $node->haschildren == true}{if $node->depth > 1} dropdown-submenu{else} dropdown{/if}{/if}'>
                <a href='{$node->url}' {if $node->parent == true || $node->haschildren == true}class='dropdown-toggle {$node->alias}' data-toggle='dropdown' data-target='#'{else}class='{$node->alias}'{/if}{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>        
        
        {* is menu item parent and not sectionheader? *}
        {elseif $node->parent == true && ($node->type != 'sectionheader' && $node->type != 'separator')}
        
            <li class='{if $node->parent == true || $node->haschildren == true} active{if $node->depth > 1} dropdown-submenu{else} dropdown{/if}{/if}'>
                <a href='{$node->url}' data-toggle='dropdown' data-target='#' class='dropdown-toggle active {$node->alias}'{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>        
      
        {* is menu item a sectionheader? *}
        {elseif $node->type == 'sectionheader' && ($node->parent == true || $node->haschildren == true)}
            <li class='sectionheader {if $node->depth > 1} dropdown-submenu{else} dropdown{/if}'>
                <a href='#' data-toggle='dropdown' class='dropdown-toggle {$node->alias}{if $node->current == true} active{/if}'>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>
        
        {* and sectionheader has no children? *}
        {elseif $node->type == 'sectionheader' && $node->haschildren == false}
            <li class='sectionheader nav-header'>
                {$node->menutext}            
        
        {* should a menu item be separated? *}
        {elseif $node->type == 'separator'}
            <li class='divider'>
        
        {else}
            <li{if $node->parent == true || $node->haschildren == true} class='{if $node->depth > 1}dropdown-submenu{else}dropdown{/if}'{/if}>
                <a href='#{$node->alias}' {if $node->parent == true || $node->haschildren == true}class='dropdown {$node->alias}'{else}class='scrollTo'{/if}{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>
        {/if}
        
    {/foreach}

    {repeat string='</li></ul>' times=$node->depth-1}</li>
    </ul>

{/if}

{/strip}


N'hésitez pas à me demander plus d'infos si jamais je n'avais pas été assez clair.


D'avance merci
#1
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: ?
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 2.0
#~ Installed Modules:
#~ AdminSearch: 1.0
#~ CMSContentManager: 1.0
#~ DesignManager: 1.0
#~ FileManager: 1.5
#~ MicroTiny: 2.0
#~ ModuleManager: 2.0
#~ Navigator: 1.0
#~ News: 2.50
#~ Search: 1.50
#~ Config Information:
#~ php_memory_limit:
#~ max_upload_size: 64000000
#~ url_rewriting: none
#~ page_extension:
#~ query_var: page
#~ auto_alias_content: true
#~ locale:
#~ set_names: true
#~ timezone: Europe/Paris
#~ permissive_smarty: false
#~ Php Information:
#~ phpversion: 5.5.12
#~ md5_function: On (Vrai)
#~ json_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_STRICT: 0
#~ E_DEPRECATED: 0
#~ test_file_timedifference:
#~ test_db_timedifference:
#~ memory_limit: 128M
#~ max_execution_time: 120
#~ output_buffering: 4096
#~ file_uploads: On (Vrai)
#~ post_max_size: 3M
#~ upload_max_filesize: 64M
#~ session_save_path: D:/wamp/tmp (0777)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ Performance Information:
#~ allow_browser_cache: Off (Faux)
#~ browser_cache_expiry: 60
#~ php_opcache: Off (Faux)
#~ smarty_cache: Off (Faux)
#~ smarty_compilecheck: Off (Faux)
#~ smarty_cache_udt: Off (Faux)
#~ auto_clear_cache_age: On (Vrai)
#~ Server Information:
#~ Server Api: apache2handler
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 5.6.17
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ Server Time Diff: Aucune différence de date du système de fichiers trouvées
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,


Je viens de passer mon site responsive en cmsms 2.0

J'utilise bootstrap 3.3.5.

Mon souci se situe au niveau du menu.Etant donné que les choses ont pas mal changé à ce niveau, je sollicite votre aide afin de m'accompagner dans la création de mon menu de navigation.


Chose importante, le site ne comportera qu'un seul point de menu dans lequel se trouvera plusieurs liens vers des ancres. Et oui, le site est en scrolling uniquement.

Nous aurons donc un menu comme ceci :

Navigation
- Accueil (lien vers home page)
- L'entreprise (lien vers ancre id = entreprise)
- Les produits (lien vers ancre id = les-produits)
-.....

Liens vers le site : www.carryall.fr


Voici le Menu template que j'utilisais dans la version 1.12 :



Code :
[== HTML ==]
{strip}

{if $count > 0}

    <ul class='nav navbar-nav navbar-right' role='menu'>
    {* if using cmsms lower then 1.11 change foreach below to {foreach from=$nodelist item='node'} *}
    {foreach $nodelist as $node}
        
        {* if depth is greater then previous we need ul *}
        {if $node->depth > $node->prevdepth}
            {repeat string="<ul class='dropdown-menu' role='menu'>" times=$node->depth-$node->prevdepth}  
        {* if depth is lower then we have to close unordered list *}
        {elseif $node->depth < $node->prevdepth}
            {repeat string='</li></ul>' times=$node->prevdepth-$node->depth}
            </li>
        {elseif $node->index > 0}
            </li>
        {/if}
        
        {* is menu item current? *}
        {if $node->current == true}
        
            <li class='active{if $node->parent == true || $node->haschildren == true}{if $node->depth > 1} dropdown-submenu{else} dropdown{/if}{/if}'>
                <a href='{$node->url}' {if $node->parent == true || $node->haschildren == true}class='dropdown-toggle {$node->alias}' data-toggle='dropdown' data-target='#'{else}class='{$node->alias}'{/if}{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>        
        
        {* is menu item parent and not sectionheader? *}
        {elseif $node->parent == true && ($node->type != 'sectionheader' && $node->type != 'separator')}
        
            <li class='{if $node->parent == true || $node->haschildren == true} active{if $node->depth > 1} dropdown-submenu{else} dropdown{/if}{/if}'>
                <a href='{$node->url}' data-toggle='dropdown' data-target='#' class='dropdown-toggle active {$node->alias}'{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>        
      
        {* is menu item a sectionheader? *}
        {elseif $node->type == 'sectionheader' && ($node->parent == true || $node->haschildren == true)}
            <li class='sectionheader {if $node->depth > 1} dropdown-submenu{else} dropdown{/if}'>
                <a href='#' data-toggle='dropdown' class='dropdown-toggle {$node->alias}{if $node->current == true} active{/if}'>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>
        
        {* and sectionheader has no children? *}
        {elseif $node->type == 'sectionheader' && $node->haschildren == false}
            <li class='sectionheader nav-header'>
                {$node->menutext}            
        
        {* should a menu item be separated? *}
        {elseif $node->type == 'separator'}
            <li class='divider'>
        
        {else}
            <li{if $node->parent == true || $node->haschildren == true} class='{if $node->depth > 1}dropdown-submenu{else}dropdown{/if}'{/if}>
                <a href='#{$node->alias}' {if $node->parent == true || $node->haschildren == true}class='dropdown {$node->alias}'{else}class='scrollTo'{/if}{if $node->target != ''} target='{$node->target}'{/if}>{$node->menutext}{if ($node->parent == true || $node->haschildren == true) && ($node->depth < 2)} <b class='caret'></b>{/if}</a>
        {/if}
        
    {/foreach}

    {repeat string='</li></ul>' times=$node->depth-1}</li>
    </ul>

{/if}

{/strip}


N'hésitez pas à me demander plus d'infos si jamais je n'avais pas été assez clair.


D'avance merci
#2
Ton gabarit de menu 1.12 ne va pas nous servir à grand chose puisque tu nous as écris précédemment :
Citation :Je remarque un autre souci qui est probablement lié au menu template. Je ne parviens pas à aller plus loin qu'un niveau dans mon menu. J'ai donc

Navigation (OK)
ancre 1 (OK)
ancre 2 (OK)
sous rubrique (OK)
point de menu 1 (n'apparaît pas dans mon menu)
point de menu 2 (n'apparaît pas dans mon menu)
Je ne peux pas faire ton gabarit si tu ne me donnes pas le code statique de cette navigation, comme je te l'ai déjà demandé.
#2
Ton gabarit de menu 1.12 ne va pas nous servir à grand chose puisque tu nous as écris précédemment :
Citation :Je remarque un autre souci qui est probablement lié au menu template. Je ne parviens pas à aller plus loin qu'un niveau dans mon menu. J'ai donc

Navigation (OK)
ancre 1 (OK)
ancre 2 (OK)
sous rubrique (OK)
point de menu 1 (n'apparaît pas dans mon menu)
point de menu 2 (n'apparaît pas dans mon menu)
Je ne peux pas faire ton gabarit si tu ne me donnes pas le code statique de cette navigation, comme je te l'ai déjà demandé.
#3
Tu parles du code que bootstrap me génèrerait au niveau des balises html ?

Code :
[== HTML ==]
        <div id="navbar" class="navbar-collapse collapse">
            
        <ul class='nav navbar-nav navbar-right' role='menu'>
            <li class='active dropdown'><a href='http://localhost/carryall/' class='dropdown-toggle home' data-toggle='dropdown' data-target='#' target='_self'>Navigation <b class='caret'></b></a>
                <ul class='dropdown-menu' role='menu'>
                <li><a href='#accueil' class='scrollTo'>Accueil</a></li>
                <li><a href='#entreprise' class='scrollTo'>L'entreprise</a></li>
                <li class='dropdown-submenu'><a href='#les-produits' class='dropdown les-produits'>Les produits</a>
                    <ul class='dropdown-menu' role='menu'>
                        <li><a href='#le-satellite-en-mouvement' class='scrollTo'>Le Satellite en mouvement</a></li>
                    </ul>
                </li>
                <li><a href='#les-concepts' class='scrollTo'>Les concepts</a></li>
                </ul>
            
            </li>
        
        </ul>
#3
Tu parles du code que bootstrap me génèrerait au niveau des balises html ?

Code :
[== HTML ==]
        <div id="navbar" class="navbar-collapse collapse">
            
        <ul class='nav navbar-nav navbar-right' role='menu'>
            <li class='active dropdown'><a href='http://localhost/carryall/' class='dropdown-toggle home' data-toggle='dropdown' data-target='#' target='_self'>Navigation <b class='caret'></b></a>
                <ul class='dropdown-menu' role='menu'>
                <li><a href='#accueil' class='scrollTo'>Accueil</a></li>
                <li><a href='#entreprise' class='scrollTo'>L'entreprise</a></li>
                <li class='dropdown-submenu'><a href='#les-produits' class='dropdown les-produits'>Les produits</a>
                    <ul class='dropdown-menu' role='menu'>
                        <li><a href='#le-satellite-en-mouvement' class='scrollTo'>Le Satellite en mouvement</a></li>
                    </ul>
                </li>
                <li><a href='#les-concepts' class='scrollTo'>Les concepts</a></li>
                </ul>
            
            </li>
        
        </ul>
#4
C'est ça Smile
Je finis un truc puis je regarde ton code.
#4
C'est ça Smile
Je finis un truc puis je regarde ton code.
#5
Petites questions :
Est-ce que la page navigation est un sectionheader ?
Y aura-t-il d'autres sectionheader ?
Est-ce que je dois écrire la classe "active" ou est-elle générée pas le JS ?
#5
Petites questions :
Est-ce que la page navigation est un sectionheader ?
Y aura-t-il d'autres sectionheader ?
Est-ce que je dois écrire la classe "active" ou est-elle générée pas le JS ?
#6
Salut,

Voici les infos. Hésites pas si t'as besoin d'autre chose.


Est-ce que la page navigation est un sectionheader ? ==> NON
Y aura-t-il d'autres sectionheader ? ==> OUI, c'est possible qu'il y en ait
Est-ce que je dois écrire la classe "active" ou est-elle générée pas le JS ? ==> Bootstrap requiert qu'au moins un élément <li> ait la classe active. Ensuite c'est le JS qui fait le travail.

Smile
#6
Salut,

Voici les infos. Hésites pas si t'as besoin d'autre chose.


Est-ce que la page navigation est un sectionheader ? ==> NON
Y aura-t-il d'autres sectionheader ? ==> OUI, c'est possible qu'il y en ait
Est-ce que je dois écrire la classe "active" ou est-elle générée pas le JS ? ==> Bootstrap requiert qu'au moins un élément <li> ait la classe active. Ensuite c'est le JS qui fait le travail.

Smile
#7
Code :
{* cssmenu *}
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}

{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{$caret='<b class="caret"></b>'}
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* setup classes for the anchor and list item *}
{$liclass=[]}
{$aclass=[]}

{if $node->index == 0}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}
{elseif $node->has_children}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
    {$aclass[]=$node->alias}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{elseif $node->index == 0}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{$node->alias}">{$node->menutext}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>

{if $depth == 0}
</div>{* menuwrapper *}
{/if}
{/strip}
J'ai pris l'exemple du gabarit type Navigator::Navigation

Je ne l'ai pas testé, n'ayant pas de bootstrap sous la main.

Je n'ai pas fait le code pour le sectioneader ni pour le separator. Si tu en as besoin, je crois que tu n'auras pas de difficulté pour l'adapter.

[edit]Remplacé $node@first par $node->index == 0[/edit]
#7
Code :
{* cssmenu *}
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}

{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{$caret='<b class="caret"></b>'}
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* setup classes for the anchor and list item *}
{$liclass=[]}
{$aclass=[]}

{if $node->index == 0}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}
{elseif $node->has_children}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
    {$aclass[]=$node->alias}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{elseif $node->index == 0}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{$node->alias}">{$node->menutext}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>

{if $depth == 0}
</div>{* menuwrapper *}
{/if}
{/strip}
J'ai pris l'exemple du gabarit type Navigator::Navigation

Je ne l'ai pas testé, n'ayant pas de bootstrap sous la main.

Je n'ai pas fait le code pour le sectioneader ni pour le separator. Si tu en as besoin, je crois que tu n'auras pas de difficulté pour l'adapter.

[edit]Remplacé $node@first par $node->index == 0[/edit]
#8
Merci d'avoir bosser si tard un vendredi.

Je vais regarder tout ça dimanche et je te tiens au courant.

Big Grin
#8
Merci d'avoir bosser si tard un vendredi.

Je vais regarder tout ça dimanche et je te tiens au courant.

Big Grin
#9
Bon weekend, alors.
Si $node->first n'est pas le premier élément (la page navigation), modifie le code en {if $node->index == 0}
#9
Bon weekend, alors.
Si $node->first n'est pas le premier élément (la page navigation), modifie le code en {if $node->index == 0}
#10
Ok
#10
Ok
#11
Voilà ce que ça donne pour le moment. J'ai supprimé <div id="navbar" class="navbar-collapse collapse"> de ta proposition car pas nécessaire. Tu peux voir que ça ne fonctionne pas encore comme il faut. Je me penche dessus.

Tu peux voir le résultat sur le site el ligne : carryall.fr
#11
Voilà ce que ça donne pour le moment. J'ai supprimé <div id="navbar" class="navbar-collapse collapse"> de ta proposition car pas nécessaire. Tu peux voir que ça ne fonctionne pas encore comme il faut. Je me penche dessus.

Tu peux voir le résultat sur le site el ligne : carryall.fr
#12
J'obtiens donc ce code :

Code :
[== HTML ==]
<ul class='nav navbar-nav navbar-right' role='menu'>
    <li class="dropdown active"><a class="dropdown-toogle navigation" href="#navigation" data-toggle='dropdown' data-target='#' target='_self'>Navigation <b class="caret"></b></a>
        <ul class='dropdown-menu' role='menu'>
            <li class="dropdown active"><a class="dropdown-toogle entreprise" href="#entreprise" data-toggle='dropdown' data-target='#' target='_self'>L'entreprise <b class="caret"></b></a></li>
            <li class="dropdown active"><a class="dropdown-toogle les-produits" href="#les-produits" data-toggle='dropdown' data-target='#' target='_self'>Les produits <b class="caret"></b></a></li>
        </ul>
    </li>

    <li class="dropdown active"><a class="dropdown-toogle home" href="#home" data-toggle='dropdown' data-target='#' target='_self'>Home <b class="caret"></b></a>
    </li>
</ul>


Alors que je devrais avoir ceci :


Code :
[== HTML ==]
<ul class="nav navbar-nav navbar-right" role="menu">
    <li class="active dropdown"><a href="http://localhost/carryall/" class="dropdown-toggle home" data-toggle="dropdown" data-target="#" target="_self" aria-expanded="false">Navigation <b class="caret"></b></a>
        <ul class="dropdown-menu" role="menu">
            <li><a href="#entreprise" class="scrollTo">L'entreprise</a></li>
            <li><a href="#les-produits" class="scrollTo">Les produits</a></li>

        </ul>
    
    </li>
</ul>
#12
J'obtiens donc ce code :

Code :
[== HTML ==]
<ul class='nav navbar-nav navbar-right' role='menu'>
    <li class="dropdown active"><a class="dropdown-toogle navigation" href="#navigation" data-toggle='dropdown' data-target='#' target='_self'>Navigation <b class="caret"></b></a>
        <ul class='dropdown-menu' role='menu'>
            <li class="dropdown active"><a class="dropdown-toogle entreprise" href="#entreprise" data-toggle='dropdown' data-target='#' target='_self'>L'entreprise <b class="caret"></b></a></li>
            <li class="dropdown active"><a class="dropdown-toogle les-produits" href="#les-produits" data-toggle='dropdown' data-target='#' target='_self'>Les produits <b class="caret"></b></a></li>
        </ul>
    </li>

    <li class="dropdown active"><a class="dropdown-toogle home" href="#home" data-toggle='dropdown' data-target='#' target='_self'>Home <b class="caret"></b></a>
    </li>
</ul>


Alors que je devrais avoir ceci :


Code :
[== HTML ==]
<ul class="nav navbar-nav navbar-right" role="menu">
    <li class="active dropdown"><a href="http://localhost/carryall/" class="dropdown-toggle home" data-toggle="dropdown" data-target="#" target="_self" aria-expanded="false">Navigation <b class="caret"></b></a>
        <ul class="dropdown-menu" role="menu">
            <li><a href="#entreprise" class="scrollTo">L'entreprise</a></li>
            <li><a href="#les-produits" class="scrollTo">Les produits</a></li>

        </ul>
    
    </li>
</ul>
#13
Le but étant d'avoir possibilité d'avoir des sous niveaux dans le menu, je joints le code statique final :

Code :
[== HTML ==]
<ul class="nav navbar-nav navbar-right" role="menu">
    <li class="dropdown active">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Navigation<b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="#">L'entreprise</a></li>
            <li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Les produits</a>
                <ul class="dropdown-menu">
                    <li><a class="scrollTo" href="#le-satellite-en-mouvement">Le Satellite en mouvement</a></li>
                    <li><a class="scrollTo" href="#le-satellite-deploye">Le Satellite déployé</a></li>

                </ul>
            </li>
        </ul>
    </li>
</ul>

Il me semble que le code actuel détermine que les sections "L'entreprise" et "Les produits" ont des enfants alors que ce n'est pas le cas.

La structure de mon menu dans l'administration CMSMS est bien la suivante :


[Image: cmsms%20structure.png]

J'ai ajouté un deuxième menu à l'identique avec Bootstrap mais hors CMSMS pour que tu vois le résultat que je vise. Il est en dessous de la bannière et est "responsive".
#13
Le but étant d'avoir possibilité d'avoir des sous niveaux dans le menu, je joints le code statique final :

Code :
[== HTML ==]
<ul class="nav navbar-nav navbar-right" role="menu">
    <li class="dropdown active">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Navigation<b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="#">L'entreprise</a></li>
            <li class="dropdown dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Les produits</a>
                <ul class="dropdown-menu">
                    <li><a class="scrollTo" href="#le-satellite-en-mouvement">Le Satellite en mouvement</a></li>
                    <li><a class="scrollTo" href="#le-satellite-deploye">Le Satellite déployé</a></li>

                </ul>
            </li>
        </ul>
    </li>
</ul>

Il me semble que le code actuel détermine que les sections "L'entreprise" et "Les produits" ont des enfants alors que ce n'est pas le cas.

La structure de mon menu dans l'administration CMSMS est bien la suivante :


[Image: cmsms%20structure.png]

J'ai ajouté un deuxième menu à l'identique avec Bootstrap mais hors CMSMS pour que tu vois le résultat que je vise. Il est en dessous de la bannière et est "responsive".
#14
Salut,

Je vois que tu en as profité pour modifier le code que tu souhaitais Wink.
En fait, j'avais juste une petite erreur, mais qui avait de grandes conséquences. Le premier parent, donc "navigation", est à $depth == 1, pas 0 Big Grin .

Voilà le code fonctionnel et testé suivant tes derniers désirs, mon Prince Wink.
Code :
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}

{if $depth=0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{$caret='<b class="caret"></b>'}
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth=1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{elseif $node->has_children}{* si l'item a des enfants *}
        {$liclass[]='dropdown'}
        {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
        {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth=1}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{if !$node->has_children}{$node->alias}{/if}">{$node->menutext}</a>
        {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
Si tu souhaites une explication, n'hésite pas.
#14
Salut,

Je vois que tu en as profité pour modifier le code que tu souhaitais Wink.
En fait, j'avais juste une petite erreur, mais qui avait de grandes conséquences. Le premier parent, donc "navigation", est à $depth == 1, pas 0 Big Grin .

Voilà le code fonctionnel et testé suivant tes derniers désirs, mon Prince Wink.
Code :
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}

{if $depth=0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{$caret='<b class="caret"></b>'}
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth=1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{elseif $node->has_children}{* si l'item a des enfants *}
        {$liclass[]='dropdown'}
        {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
        {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth=1}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{if !$node->has_children}{$node->alias}{/if}">{$node->menutext}</a>
        {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
Si tu souhaites une explication, n'hésite pas.
#15
Salut,

Je viens de tester. Mon menu n'apparaît plus comme tu peux le voir "online". Je cherche la cause.
#15
Salut,

Je viens de tester. Mon menu n'apparaît plus comme tu peux le voir "online". Je cherche la cause.
#16
Je vois que le résultat produit est le suivant :

Code :
[== HTML ==]
<div id="navbar" class="navbar-collapse collapse">
    <ul class='dropdown-menu' role='menu'>
        <li class="dropdown active"><a class="dropdown-toogle navigation" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Navigation </a>
            <ul class='dropdown-menu' role='menu'>
                <li class="dropdown active"><a class="dropdown-toogle entreprise" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>L'entreprise </a></li>
                <li class="dropdown active"><a class="dropdown-toogle les-produits" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Les produits </a>
                    <ul class='dropdown-menu' role='menu'>
                        <li class="dropdown active"><a class="dropdown-toogle le-satellite-en-mouvement" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Le Satellite en mouvement </a></li>
                        <li class="dropdown active"><a class="dropdown-toogle le-satellite-déployé" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Le Satellite déployé </a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>      
</div>


Je vois déjà deux li avec la classe "dropdown active", ce qui n'est pas logique je pense.
De plus, la classe "scrollTo" n'apparaît nulle part.
#16
Je vois que le résultat produit est le suivant :

Code :
[== HTML ==]
<div id="navbar" class="navbar-collapse collapse">
    <ul class='dropdown-menu' role='menu'>
        <li class="dropdown active"><a class="dropdown-toogle navigation" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Navigation </a>
            <ul class='dropdown-menu' role='menu'>
                <li class="dropdown active"><a class="dropdown-toogle entreprise" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>L'entreprise </a></li>
                <li class="dropdown active"><a class="dropdown-toogle les-produits" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Les produits </a>
                    <ul class='dropdown-menu' role='menu'>
                        <li class="dropdown active"><a class="dropdown-toogle le-satellite-en-mouvement" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Le Satellite en mouvement </a></li>
                        <li class="dropdown active"><a class="dropdown-toogle le-satellite-déployé" href="http://localhost/test2/" data-toggle='dropdown' data-target='#' target='_self'>Le Satellite déployé </a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>      
</div>


Je vois déjà deux li avec la classe "dropdown active", ce qui n'est pas logique je pense.
De plus, la classe "scrollTo" n'apparaît nulle part.
#17
Ok, chef, j'ai trouvé l'erreur, il fallait utiliser $node->children_exist au lieu de $node->has_children et ne pas se gourer bêtement avec if depth = 1 au lieu de if depth == 1
Essaye ceci, je pense qu'on y est :
Code :
{* cssmenu *}
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}
{$caret='<b class="caret"></b>'}
{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth == 1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{elseif $node->children_exist}{* si l'item a des enfants *}
    {$liclass[]='dropdown'}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth == 1}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{if !$node->children_exist}{$node->alias}{/if}">{$node->menutext}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
#17
Ok, chef, j'ai trouvé l'erreur, il fallait utiliser $node->children_exist au lieu de $node->has_children et ne pas se gourer bêtement avec if depth = 1 au lieu de if depth == 1
Essaye ceci, je pense qu'on y est :
Code :
{* cssmenu *}
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}
{$caret='<b class="caret"></b>'}
{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{else}
<ul class='dropdown-menu' role='menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth == 1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{elseif $node->children_exist}{* si l'item a des enfants *}
    {$liclass[]='dropdown'}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown'}
    {$aclass[]='dropdown-toogle'}
    {$aclass[]=$node->alias}{* supprimer si pas d'alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth == 1}
    <li class="{implode(' ',$liclass)}">
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="{$node->url}" data-toggle='dropdown' data-target='#' target='_self'>{$node->menutext} {$caret}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
      <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#{if !$node->children_exist}{$node->alias}{/if}">{$node->menutext}</a>
      {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
      {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
#18
Ok, c'est nettement mieux.


Reste les liens de la section Les produits, qui ne s'affichent pas. La version online est à jour.
#18
Ok, c'est nettement mieux.


Reste les liens de la section Les produits, qui ne s'affichent pas. La version online est à jour.
#19
Le code généré n'est pas celui que tu m'a demandé ?
#19
Le code généré n'est pas celui que tu m'a demandé ?
#20
Si c'est déjà une grande amélioration. Big Grin

Au niveau de mon point de menu Les produits, je peux le laisser en Lien de page interne ou dois-je le passer en section header ?
#20
Si c'est déjà une grande amélioration. Big Grin

Au niveau de mon point de menu Les produits, je peux le laisser en Lien de page interne ou dois-je le passer en section header ?
#21
Attends, je viens de comparer tes 2 menus et il y a une différence au niveau des ancres (data-toogle).
Je modifie.
#21
Attends, je viens de comparer tes 2 menus et il y a une différence au niveau des ancres (data-toogle).
Je modifie.
#22
Est-ce que le code de ton 2ème menu (online), celui qui fonctionne, est le bon ? Il y a de nouveau des différences entre lui et celui que tu m'avais demandé.
Voilà le code qui reflète exactement ton second menu online :
Code :
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}
{$caret='<b class="caret"></b>'}
{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{else}
<ul class='dropdown-menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth == 1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {* $aclass[]=$node->alias *}{* à dé-commenter si alias dans la classe de l'ancre *}
{elseif $node->children_exist}{* si l'item a des enfants *}
    {$liclass[]='dropdown'}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown-toogle'}
    {* {$aclass[]=$node->alias} *}{* à dé-commenter si alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth == 1}
    <li class="{implode(' ',$liclass)}">
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#" data-toggle='dropdown' data-target='#'>{$node->menutext} {$caret}</a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{if $node->children_exist} data-toggle='dropdown'{/if}{/if} href="#{if !$node->children_exist}{$node->alias}{/if}">{$node->menutext}</a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
#22
Est-ce que le code de ton 2ème menu (online), celui qui fonctionne, est le bon ? Il y a de nouveau des différences entre lui et celui que tu m'avais demandé.
Voilà le code qui reflète exactement ton second menu online :
Code :
{* this template uses recursion, but not a smarty function. *}
{*
  variables:
  node: contains the current node.
  aclass: is used to build a string containing class names given to the a tag if one is used
  liclass: is used to build a string containing class names given to the li tag.
*}
{if !isset($depth)}{$depth=0}{/if}
{strip}
{$caret='<b class="caret"></b>'}
{if $depth == 0}
<div id="navbar" class="navbar-collapse collapse">
<ul class='nav navbar-nav navbar-right' role='menu'>
{else}
<ul class='dropdown-menu'>
{/if}

{$depth=$depth+1}
{foreach $nodes as $node}
{* création et reset classes liens et ancres *}
{$liclass=[]}
{$aclass=[]}

{if $depth == 1}{* si on est sur le top parent *}
    {$liclass[]='dropdown'}
    {$liclass[]='active'}
    {$aclass[]='dropdown-toogle'}
    {* $aclass[]=$node->alias *}{* à dé-commenter si alias dans la classe de l'ancre *}
{elseif $node->children_exist}{* si l'item a des enfants *}
    {$liclass[]='dropdown'}
    {$liclass[]='dropdown-submenu'}
    {$aclass[]='dropdown-toogle'}
    {* {$aclass[]=$node->alias} *}{* à dé-commenter si alias dans la classe de l'ancre *}
{else}
    {$aclass[]='scrollTo'}
{/if}  

{* build the menu item from the node *}
{if $node->type == 'sectionheader'}
    <li class='{implode(' ',$liclass)}'><a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if}><span class="sectionheader">{$node->menutext}</span></a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $depth == 1}
    <li class="{implode(' ',$liclass)}">
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{/if} href="#" data-toggle='dropdown' data-target='#'>{$node->menutext} {$caret}</a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{elseif $node->type == 'separator'}
    <li style="list-style-type: none;"><hr class="menu_separator"/></li>
{else}
    <li{if count($liclass) > 0} class="{implode(' ',$liclass)}"{/if}>
        <a{if count($aclass) > 0} class="{implode(' ',$aclass)}"{if $node->children_exist} data-toggle='dropdown'{/if}{/if} href="#{if !$node->children_exist}{$node->alias}{/if}">{$node->menutext}</a>
    {if isset($node->children)}
        {include file=$smarty.template nodes=$node->children}
    {/if}
    </li>
{/if}
{/foreach}
{$depth=$depth-1}
</ul>
{/strip}
#23
Oui le code du deuxième menu online est bon. D'ailleurs il fonctionne, fait le test. Smile

On y est presque...
#23
Oui le code du deuxième menu online est bon. D'ailleurs il fonctionne, fait le test. Smile

On y est presque...
#24
Je viens de modifier au moment où tu as posté, tu as le code juste au-dessus.
#24
Je viens de modifier au moment où tu as posté, tu as le code juste au-dessus.
#25
Oui j'ai vu merci bcp. Et ça fonctionne bien.

J'ai juste du enlever <ul class='nav navbar-nav navbar-right' role='menu'> pour que ça fonctionne en largeur Mobile.

Je fait quelques tests supplémentaires afin de voir si ça fonctionne dans tous les cas.

Un grand merci. Big Grin
#25
Oui j'ai vu merci bcp. Et ça fonctionne bien.

J'ai juste du enlever <ul class='nav navbar-nav navbar-right' role='menu'> pour que ça fonctionne en largeur Mobile.

Je fait quelques tests supplémentaires afin de voir si ça fonctionne dans tous les cas.

Un grand merci. Big Grin


Atteindre :


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