Forum CMS Made Simple Francophone

Aide francophone sur CMS Made Simple

Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 30/05/2016 10:56:23

Yannkee
Petit nouveau
Inscription : 05/09/2014
Messages : 5

Menu BS et active sectionheader sur version 1.9.x

#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: !1.11.x
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~      Version du CMS
#~      1.9.4.2
#~      Modules installés
#~      CMSMailer
#~      2.0.1
#~      FileManager
#~      1.1.0
#~      MenuManager
#~      1.7.6
#~      ModuleManager
#~      1.4.2
#~      News
#~      2.11.3
#~      nuSOAP
#~      1.0.2
#~      Printing
#~      1.1.2
#~      Search
#~      1.6.10
#~      ThemeManager
#~      1.1.4
#~      TinyMCE
#~      2.8.4
#~      babel
#~      0.4
#~      Album
#~      0.9.3
#~      FormBuilder
#~      0.7
#~      FileBackup
#~      0.5
#~      MysqlDump
#~      1.2.4
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,
Bon alors je sais, ce n'est pas la derniere version de CMSMS mais pour tout un tas de raisons locales il n'est pas a l'ordre du jour de faire un upgrade desole.
Donc ma question est toute simple, j'ai un menu en BS tout bete dont voici l'extrait qui me pose soucis

[== Indéfini ==]
    <ul class='nav navbar-nav navbar-right' role='menu'>
    {foreach from=$nodelist item='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} 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->url}' {if $node->parent == true || $node->haschildren == true}class='dropdown {$node->alias}'{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>
        {/if}
        
    {/foreach}

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

Mon menu a une structure du type
1 Accueil (contenu page)
2 Rubrique1 (contenu SectionHeader)
2.1 Sous rubrique 1a (contenu page)
2.2 Sous rubrique 1b (contenu page)
3 Rubrique 2 (contenu page)
etc etc

Je voudrais que si je me trouve sur la page 2.1 ou 2.2, la classe du menu [2 Rubrique] (de type SectionHeader) passe en "active" pour pouvoir lui affecter un style specifique. Donc simplement identifier d'une classe la rubrique parente lorsque une des pages children est active.

J'espere etre assez clair.

J'ai eu beau chercher sur G ou sur les forums CMSMS, impossible de trouver une reponse simple que j'aie pu comprendre ou mettre en oeuvre...

Une piste, un exemple, un modele ?

Merci !

Dernière modification par Yannkee (30/05/2016 10:58:09)

Hors ligne

#2 30/05/2016 11:47:55

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 693
Site Web

Re : Menu BS et active sectionheader sur version 1.9.x

Sans avoir testé, un truc dans le genre :

{if $node->current == true}
[...]
{* n'est pas current et est le parent sectionheader de l'item actuel *}
{elseif $node->parent == true && $node->type == 'sectionheader'}        
            <li class='active'>[...]

Hors ligne

#3 30/05/2016 12:39:56

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 101
Site Web

Re : Menu BS et active sectionheader sur version 1.9.x

ce n'est pas la derniere version de CMSMS mais pour tout un tas de raisons locales il n'est pas a l'ordre du jour de faire un upgrade

Les mises à jour sont la pour corriger des failles potentielles .... mais c'est ton problème et ta responsabilité. cool


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#4 30/05/2016 13:38:00

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 187
Site Web

Re : Menu BS et active sectionheader sur version 1.9.x

Teste la valeur de {$node->current} - je crois que sur les parents, elle est à 1 dans ce cas-là

Hors ligne

#5 30/05/2016 14:43:44

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 693
Site Web

Re : Menu BS et active sectionheader sur version 1.9.x

Non, non, current est false. Il n'y a qu'un seul current == true.
Par contre, il peut y avoir plusieurs parent == true si tu as des <ul> successifs (rubrique->sousrubrique->sousousrubrique...).
Tu places un <pre>{$nodelist|var_dump}</pre> dans ton foreach (menu) et tu vas sur la page sousrubrique 1A. Il te suffit de regarder les valeurs contenues dans l'array ayant "pagetitle" => rubrique1

Dernière modification par Jean le Chauve (30/05/2016 14:53:51)

Hors ligne

Pied de page des forums