Les avertissements suivants se sont produits :
Warning [2] Undefined property: MyLanguage::$archive_pages - Line: 2 - File: printthread.php(287) : eval()'d code PHP 8.2.18 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(287) : eval()'d code 2 errorHandler->error_callback
/printthread.php 287 eval
/printthread.php 117 printthread_multipage



Forum CMS Made Simple FR
[Résolu] Menu bootstrap et cmsms 2.0 - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Général (https://forum.cmsmadesimple.fr/forum-10.html)
+--- Sujet : [Résolu] Menu bootstrap et cmsms 2.0 (/thread-3602.html)

Pages : 1 2


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 18/09/2015

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


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 18/09/2015

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é.


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 18/09/2015

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>



[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 18/09/2015

C'est ça Smile
Je finis un truc puis je regarde ton code.


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 18/09/2015

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 ?


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 18/09/2015

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


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 18/09/2015

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]


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 18/09/2015

Merci d'avoir bosser si tard un vendredi.

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

Big Grin


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 18/09/2015

Bon weekend, alors.
Si $node->first n'est pas le premier élément (la page navigation), modifie le code en {if $node->index == 0}


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 18/09/2015

Ok


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 20/09/2015

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


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 20/09/2015

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>



[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 20/09/2015

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".


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 20/09/2015

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.


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

Salut,

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


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

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.


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 21/09/2015

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}



[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

Ok, c'est nettement mieux.


Reste les liens de la section Les produits, qui ne s'affichent pas. La version online est à jour.


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 21/09/2015

Le code généré n'est pas celui que tu m'a demandé ?


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

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 ?


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 21/09/2015

Attends, je viens de comparer tes 2 menus et il y a une différence au niveau des ancres (data-toogle).
Je modifie.


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 21/09/2015

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}



[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

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

On y est presque...


[Résolu] Menu bootstrap et cmsms 2.0 - Jean le Chauve - 21/09/2015

Je viens de modifier au moment où tu as posté, tu as le code juste au-dessus.


[Résolu] Menu bootstrap et cmsms 2.0 - Joey0007 - 21/09/2015

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