[Résolu] Couleur spécifique pour menu

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.2
#~ Nom de l'hébergeur : localhost
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.3
#~ * MenuManager: 1.7.4
#~ * ModuleManager: 1.4
#~ * News: 2.11
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.1
#~ * Search: 1.6.8
#~ * ThemeManager: 1.1.3
#~ * TinyMCE: 2.8.2
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 14000000
#~ * default_upload_permission: 664
#~ * url_rewriting: none
#~ * page_extension:
#~ * query_var: page
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.3.0
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * E_DEPRECATED: 0
#~ * memory_limit: 256M
#~ * max_execution_time: 90
#~ * output_buffering: 1
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 16M
#~ * upload_max_filesize: 14M
#~ * session_save_path: c:/wamp/tmp (0777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~



Bonjour,

J'ai cherché en vain, ici et ailleurs, une solution élégante à ce petit problème. Je m'explique, j'utilise le template Forrester légèrement modifié.
J'ai un menu principal composé de 5 onglets tout en haut de pages. Chaque onglet a deux états différents avec une image correspondante gérée via ma feuille de style. Ce menu est contrôlé par "menu-haut.tpl" qui n'est qu'une adaptation sommaire du "minimal template". Le voici:
Code :
{if $count > 0}
<ul class="clearfix">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->current == true}
<li class="currentpage{$node->hierarchy|truncate:1}"><a href="{$node->url}" {if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>


{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="separator" />

{else}
<li class="onglet{$node->hierarchy|truncate:1}"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{/if}

{/foreach}

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

Sur le côté droit de ma page j'ai un menu de "sous-rubrique" de niveau 2 appelé de façon classique. Puis j'ai un troisième menu, juste en dessous de mon bandeau (header). Ce dernier fonctionne avec la syntaxe items=page1,page2,page3
En fonction de l'onglet du menu du haut qui est actif , je souhaite que la couleur de ce troisième menu dont voici le code change.
Code :
<ul class="clearfix">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->current == true}
<li><a href="{$node->url}" class="currentpage"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{elseif  $node->depth == 1 and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="activeparent"> <a href="{$node->url}" {if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="separator" />

{else}
<li><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{/if}

{/foreach}

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

Problème, je ne sais pas comment tester et récupérer la "hierarchie" de l'onglet actuel (celui enfoncé en haut de page).
Pour faire imagé et simple j'espère: voici une arborescence factice

1 fruits
1.1 pommes
1.2 bananes
1.3 poires

2 légumes
2.1 carottes
2.2 navets
2.3 haricots

3 Viandes
3.1 veau
3.2 agneau
3.4 boeuf

4 Dessert
5 Entremets
6 Entrées
7 Trou normand

si une des pages catégorie 1 est cochée, je veux que mon troisième menu soit d'une couleur, si catégorie 2 d'une autre couleur etc. Le troisième menu étant appelé de la façon suivante:
Code :
{menu template="menupetit" items="dessert,entremets,entrees,trou-normand"}
PHP j'ai des bases, CSS aussi, mais Smarty c'est un peu plus neuf.
Merci de votre aide, j'ai été un peu long non ?
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS: 1.9.2
#~ Nom de l'hébergeur : localhost
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.9.2
#~ Installed Modules:
#~ * CMSMailer: 2.0
#~ * FileManager: 1.0.3
#~ * MenuManager: 1.7.4
#~ * ModuleManager: 1.4
#~ * News: 2.11
#~ * nuSOAP: 1.0.2
#~ * Printing: 1.1.1
#~ * Search: 1.6.8
#~ * ThemeManager: 1.1.3
#~ * TinyMCE: 2.8.2
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * output_compression: false
#~ * max_upload_size: 14000000
#~ * default_upload_permission: 664
#~ * url_rewriting: none
#~ * page_extension:
#~ * query_var: page
#~ * image_manipulation_prog: GD
#~ * auto_alias_content: true
#~ * locale:
#~ * default_encoding: utf-8
#~ * admin_encoding: utf-8
#~ * set_names: true
#~ Php Information:
#~ * phpversion: 5.3.0
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * E_DEPRECATED: 0
#~ * memory_limit: 256M
#~ * max_execution_time: 90
#~ * output_buffering: 1
#~ * safe_mode: Off (Faux)
#~ * file_uploads: On (Vrai)
#~ * post_max_size: 16M
#~ * upload_max_filesize: 14M
#~ * session_save_path: c:/wamp/tmp (0777)
#~ * session_use_cookies: On (Vrai)
#~ * xml_function: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~



Bonjour,

J'ai cherché en vain, ici et ailleurs, une solution élégante à ce petit problème. Je m'explique, j'utilise le template Forrester légèrement modifié.
J'ai un menu principal composé de 5 onglets tout en haut de pages. Chaque onglet a deux états différents avec une image correspondante gérée via ma feuille de style. Ce menu est contrôlé par "menu-haut.tpl" qui n'est qu'une adaptation sommaire du "minimal template". Le voici:
Code :
{if $count > 0}
<ul class="clearfix">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->current == true}
<li class="currentpage{$node->hierarchy|truncate:1}"><a href="{$node->url}" {if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>


{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="separator" />

{else}
<li class="onglet{$node->hierarchy|truncate:1}"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{/if}

{/foreach}

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

Sur le côté droit de ma page j'ai un menu de "sous-rubrique" de niveau 2 appelé de façon classique. Puis j'ai un troisième menu, juste en dessous de mon bandeau (header). Ce dernier fonctionne avec la syntaxe items=page1,page2,page3
En fonction de l'onglet du menu du haut qui est actif , je souhaite que la couleur de ce troisième menu dont voici le code change.
Code :
<ul class="clearfix">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}

{if $node->current == true}
<li><a href="{$node->url}" class="currentpage"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{elseif  $node->depth == 1 and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="activeparent"> <a href="{$node->url}" {if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="separator" />

{else}
<li><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{/if}

{/foreach}

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

Problème, je ne sais pas comment tester et récupérer la "hierarchie" de l'onglet actuel (celui enfoncé en haut de page).
Pour faire imagé et simple j'espère: voici une arborescence factice

1 fruits
1.1 pommes
1.2 bananes
1.3 poires

2 légumes
2.1 carottes
2.2 navets
2.3 haricots

3 Viandes
3.1 veau
3.2 agneau
3.4 boeuf

4 Dessert
5 Entremets
6 Entrées
7 Trou normand

si une des pages catégorie 1 est cochée, je veux que mon troisième menu soit d'une couleur, si catégorie 2 d'une autre couleur etc. Le troisième menu étant appelé de la façon suivante:
Code :
{menu template="menupetit" items="dessert,entremets,entrees,trou-normand"}
PHP j'ai des bases, CSS aussi, mais Smarty c'est un peu plus neuf.
Merci de votre aide, j'ai été un peu long non ?
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...
#2
Bien, c'est résolu, pour ceux que cela peut aider....

Il suffit d'installer le module CGSimpleSmarty (cela installe quelques objets smarty supplémentaires, l'aide est on ne peut plus simple)

Cette syntaxe permet de récupérer l'alias de la page de niveau supérieur à la page affichée:

Code :
get_root_alias([$alias],[$assign])

Merci donc indirectement à Calguy pour la mise à disposition du module !

Puis dans le menu concerné je teste 1 à 1 les alias de mes pages de rubrique et j'assigne une classe particulière en fonction:

Code :
{if $count > 0}
{if $cgsimple->get_root_alias() == "rubrique-1"}
<ul class="clearfix1">
{elseif $cgsimple->get_root_alias() == "rubrique-2"}
<ul class="clearfix2">
{elseif $cgsimple->get_root_alias() == "rubrique-3"}
<ul class="clearfix3">
{elseif $cgsimple->get_root_alias() == "rubrique-4"}
<ul class="clearfix4">
{elseif $cgsimple->get_root_alias() == "rubrique-5"}
<ul class="clearfix5">
{else}
<ul class="clearfix">
{/if}


Puis dans la feuille de style:
Code :
#menup ul.clearfix1 li,#menup ul.clearfix1 li a{background-color:#ada6fa;}
#menup ul.clearfix2 li,#menup ul.clearfix2 li a{background-color:#71c6ff;}
#menup ul.clearfix3 li,#menup ul.clearfix3 li a{background-color:#b4dad2;}
#menup ul.clearfix4 li,#menup ul.clearfix4 li a{background-color:#a37cff;}
#menup ul.clearfix5 li,#menup ul.clearfix5 li a{background-color:#fda9bf;}

Voilà, c'est fini et sans passer par un changement de gabarit ! (je pense qu'il existe des solutions à la fois plus simples et plus élégantes mais bon...cela fonctionne) Smile
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...
#2
Bien, c'est résolu, pour ceux que cela peut aider....

Il suffit d'installer le module CGSimpleSmarty (cela installe quelques objets smarty supplémentaires, l'aide est on ne peut plus simple)

Cette syntaxe permet de récupérer l'alias de la page de niveau supérieur à la page affichée:

Code :
get_root_alias([$alias],[$assign])

Merci donc indirectement à Calguy pour la mise à disposition du module !

Puis dans le menu concerné je teste 1 à 1 les alias de mes pages de rubrique et j'assigne une classe particulière en fonction:

Code :
{if $count > 0}
{if $cgsimple->get_root_alias() == "rubrique-1"}
<ul class="clearfix1">
{elseif $cgsimple->get_root_alias() == "rubrique-2"}
<ul class="clearfix2">
{elseif $cgsimple->get_root_alias() == "rubrique-3"}
<ul class="clearfix3">
{elseif $cgsimple->get_root_alias() == "rubrique-4"}
<ul class="clearfix4">
{elseif $cgsimple->get_root_alias() == "rubrique-5"}
<ul class="clearfix5">
{else}
<ul class="clearfix">
{/if}


Puis dans la feuille de style:
Code :
#menup ul.clearfix1 li,#menup ul.clearfix1 li a{background-color:#ada6fa;}
#menup ul.clearfix2 li,#menup ul.clearfix2 li a{background-color:#71c6ff;}
#menup ul.clearfix3 li,#menup ul.clearfix3 li a{background-color:#b4dad2;}
#menup ul.clearfix4 li,#menup ul.clearfix4 li a{background-color:#a37cff;}
#menup ul.clearfix5 li,#menup ul.clearfix5 li a{background-color:#fda9bf;}

Voilà, c'est fini et sans passer par un changement de gabarit ! (je pense qu'il existe des solutions à la fois plus simples et plus élégantes mais bon...cela fonctionne) Smile
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...
#3
le - [Résolu] c'est au début du titre de votre 1er message
J-C Etiemble v 2.2.xx
#3
le - [Résolu] c'est au début du titre de votre 1er message
J-C Etiemble v 2.2.xx
#4
Dans l'enthousiasme n'est-ce pas ? Smile
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...
#4
Dans l'enthousiasme n'est-ce pas ? Smile
Win 10 pro 64 - CMSMS 2.2.19 - grincheux parfois...


Atteindre :


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