We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33706
    • 51 Posts
    [Note du modérateur : Re-titré ce thread]

    Salut,

    comment puis je créer 2 menus avec modx :
    un en haut format horizontal : menu principal.
    un deuxième latéral menu secondaire.

    David m’avait donné une piste mais ça ne marche pas : utiliser [*id*] dans startDoc pour le menu latéral.

    Merci d’avance.

    Michel
      • 6726
      • 7,075 Posts
      OK, michel, suite de notre conversation sur le Hub.

      Je pense que ce que tu cherches est en fait un hack de DropMenu, proposé par Dernier_recours :
      http://modxcms.com/forums/index.php/topic,4095.msg29959.html#msg29959

        .: COO - Commerce Guys - Community Driven Innovation :.


        MODx est l'outil id
        • 11975
        • 2,542 Posts
        Slt,

        pour reprendre ce que je disais en PM a michel.
        Dans le cas d’une double navigation j’utilise (du moins jusqu’a present j’ai procédé comme cela) le snippet de sotwell [[UltimateParent]] comme &startDoc.
        Cela fonctionne parfaitement pour dévoiler le contenu du repertoire en cours de consultation.

        Peut etre que cette solution n’est pas adaptée dans ton cas si tu cherches à accéder depuis l’intitulé du folder au premier enfant de ce dernier.
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
          • 33706
          • 51 Posts
          Salut.

          En résumé, voici un comparatif des 2 aproches :

          1. le code de [[UltimateParent]] :
          // UltimateParent - MODx snippet
          // recursively searches the document tree
          // and determines the "ultimate" parent
          // (the one whose parent is 0)
          // of the given document
          //
          // created 02 Nov 2005 by [email protected]
          // released to the public domain
          // 
          // Usage:
          // [!Menusnippet?folderid =`[[UltimateParent]]`!] 
          // [!...!] form must be used so the inner snippet
          // is parsed properly.
          //
          $id = $modx->documentIdentifier;
          $pid = $modx->getParent($id,1,"id");
          if($pid['id'] == 0) { return $id; }
          while ($pid['id'] != 0) {
              $id = $pid['id'];
              $pid = $modx->getParent($id,1,"id");
          }
          return $id;
          


          2. le code du hack à la fonction DropMenu proposé par dernier_recours :
          if($startFromParent==true)
          {
          	// document id
          	$cid = $modx->documentObject['id'];
          	// document parent
          	$pid = $modx->getParent($cid,1,"id");
          
          	$ptarr=array();
          	$ptarr[]=$cid;
          	while ($parent=$modx->getPageInfo($pid['id'])) 
          	{
          		$ptarr[]=$parent['id'];
          	   $pid = $modx->getParent($parent['id'],1,"id");
          	}
          	$ptarr = array_reverse($ptarr);
          	$startDoc=$ptarr[0];
          }
          


          Résultats des courses (Corrigez moi si je me trompe) ils font pratiquement la meme chose, avec 2 approches légérement différentes.
          Personelement je préferre utiliser un snippet [[UltimateParent]], pour ne pas "hacker" ou modifier une fonction existante et bien consolidée.

          Par contre une autre question me vient à l’esprit : on me conseille d’insérer le snippet [[!UltimateParent!]] avec les points d’exclamation.
          J’en déduit que la fonction sera appelée toujours, indépendament du cache ??
          Je perd tous les avantages du cache quand j’utilise une fonction avec les points d’exclamation ??

          A+
            • 6726
            • 7,075 Posts
            Décidémment, on en découvre tous les jours sur les forums de MODx...

            Autre possibilité peut-être encore plus intéressante : utiliser le snippet SectionRoots come paramètre de DropMenu (et oui MODx supporte des appels récursifs des snippets...).
              .: COO - Commerce Guys - Community Driven Innovation :.


              MODx est l'outil id