Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Résolu] Titre d'un menu vertical de second niveau
#1

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 !
#2

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!

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
#3

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...
#4

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...
#5

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]
#6

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é!!!!
#7

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

@+ !
#8

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

{SEO}
Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)
#9

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


Atteindre :


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