Forum CMS Made Simple FR
[Résolu] Titre d'un menu vertical de second niveau - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html)
+--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html)
+--- Sujet : [Résolu] Titre d'un menu vertical de second niveau (/thread-3324.html)



[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.10
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour à tous et merci de m'accueillir au sein de votre forum.

Voici mon soucis:

Dans mon gabarit, j'ai deux menus:
- Menu horizontal de niveau 1
- Menu vertical de niveau 2 (qui affiche donc les sous-menus en fonction du lien choisi dans le menu horizontal)

En tête de mon menu vertical, je voudrais ajouter un titre qui correspond au lien de menu horizontal sélectionné.
Pouvez-vous me dire le code que je dois ajouter dans mon gabarit?

Merci à vous !


[Résolu] Titre d'un menu vertical de second niveau - jissey - 20/10/2014

Bonjour,
la dernière fois que j'en ai eu besoin, j'ai fait une UDT (balise utilisateur) largement inspirée de Rolf, mais il y a peut-être plus simple avec CGExtensions peut-être?
Donc, j'ai fait une UDT appelée get_root_parent et :
Code :
[== Indéfini ==]
$manager = cmsms()->GetHierarchyManager();
$palias = "";
$pmenutext  = "";
$thisPage = $smarty->get_template_vars('content_id');
$currentNode = $manager->sureGetNodeById($thisPage);
while(isset($currentNode) && $currentNode->getLevel() >= 1 ) {
    $currentContent =& $currentNode->getContent();      
          $palias = $currentContent->Alias();
          $pmenutext = htmlspecialchars($currentContent->Menutext());
          $currentNode =& $currentNode->getParentNode();      
}
$smarty->assign(palias,$palias);
$smarty->assign(pmenutext ,$pmenutext);
Voilà, après cela , appelles cette UDT dans ton gabarit de page par exemple et tu disposeras de 2 variables utilisables dans ton gabarit de menu :
{$palias} et {$pmenutext}
Enjoy!


[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

Merci pour ta réponse! Malheureusement, quand je crée une balise utilisateur avec ton code (copier-coller), il m'indique 'Le code entré est invalide'... Première fois que je tente de créer une balise utilisateur, peut-être que je le fais mal...


[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

Lorsque j'utilise l'UDT de Rolf (ton link) ça fonctionne, sauf qu'il ne 'remonte' pas d'un niveau, mais reviens à la racine du menu, càd le choix de langue que j'ai mis en top: FR ou EN.
En fait je me suis mal exprimé au départ:
- Le menu horizontal est de niveau 2
- Le menu vertical est de niveau 3
- Le menu de niveau 1 est employé par le choix de langue.

Sorry, je ne savais pas que cette précision était importante...


[Résolu] Titre d'un menu vertical de second niveau - Jean le Chauve - 20/10/2014

Bonjour,
Tu as besoin du module CGSimpleSmarty.
Ce dernier te permet, entre autres, de récupérer l'alias de la page parent simplement en mettant ce code dans ton gabarit de page
Code :
<h3>{cgsimple::get_parent_alias()}</h3>
ta balise appel du menu...

Si l'alias ne te convient pas (à cause des tirets possibles) et que tu souhaites le titre de la page parent, tu peux utiliser
Code :
<h3>{cgsimple::get_parent_alias('','parentAlias')}// on assigne l'alias de la page parent à la variable $parentAlias
{cgsimple::get_page_title($parentAlias)}</h3>
Si tu souhaites le texte du menu :
Code :
<h3>{cgsimple::get_parent_alias('','parentAlias')}{cgsimple::get_page_menutext($parentAlias)}</h3>

Je te laisse découvrir les autres possibilités de ce module en fouillant l'aide du module.

[edit]Oups, too late[/edit]


[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

J'y suis arrivé en faisant un mix des deux codes:

Code :
[== PHP ==]
$manager = cmsms()->GetHierarchyManager();

$var = isset($params['assign']) ? $params['assign'] : 'root_page_alias';

$result = "NO RESULT";
$thisPage = $smarty->get_template_vars('content_id');
$currentNode = $manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= 1 )
{
    $currentContent =& $currentNode->getContent();
    $result = $currentContent->Menutext();
    $currentNode =& $currentNode->getParentNode();
}
$smarty->assign($var,$result);

Merci infiniment, ça m'a aidé!!!!


[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

Merci à vous deux ça tourne maintenant! Jean, je vais essayer aussi ton 'système'.

@+ !


[Résolu] Titre d'un menu vertical de second niveau - jissey - 20/10/2014

seunam a écrit :Merci pour ta réponse! Malheureusement, quand je crée une balise utilisateur avec ton code (copier-coller), il m'indique 'Le code entré est invalide'... Première fois que je tente de créer une balise utilisateur, peut-être que je le fais mal...
Je pense que tu as dû copier le [== Indéfini ==] qui est généré par l'insertion du code ici!
Sinon, ma balise tiens compte du multilingue aussi, puisque le test est bien $currentNode->getLevel() >= 1.
Voilà, bienvenue dans notre modeste communauté d'entre-aide!

Merci JLC, je ne connais pas bien tout ces modules qui apportent des facilités intégrées et dont j'avoue ne pas être fan.
Je préfèrerais que ces fonctions fassent partie de l'API (surtout quand on sait qui les developpe).


[Résolu] Titre d'un menu vertical de second niveau - seunam - 20/10/2014

Arf, big noob, effectivement je copiais cette ligne aussi^^. Merci infiniment pour votre aide!