We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 8471
    • 333 Posts
    Allora vi spiego la mia situazione... il mio sito è strutturato con un menò principale posto in alto che mostra le categorie principali  del sito e come dire rimane invariato indipendentemente da dove uno va e infatti è chiamato con questa semplice call : [!DropMenu? &levelLimit=`1`!]
    Le categorie mostrate da questo menù sono tutte cartelle che al loro interno contengono altri documenti (o cartelle) che sono elencati con questo snippet in una colonna laterale del sito:
    /**
     * SubMenu for use with Greenery Template
     *
     * @version 1.0
     * @copyright 2006
     */
    
    
    $id = $modx -> documentIdentifier;
    $pid = $modx -> getParent($id, 1, "id");
    while ($pid['id'] != 0) {
        $id = $pid['id'];
         $pid = $modx -> getParent($id, 1, "id");
        }
    $output = "";
    $menu = "";
    $snippetName = 'MenuBuilder';
    $snippetParams = array('id' => $id, 'nosub' => 1);
    $menu = $modx -> runSnippet($snippetName, $snippetParams);
    
    if ($menu != "") {
        $output .= "<h1><span>MENU</span></h1><div class=\"sideMenu\">$menu</div>";
    }
    else {
        $output = "";
    }
    
    return $output;
    


    Ecco... il problema è questo: una volta che clicco su elemento del menù laterale vado a quell’elemento (non l’ avreste detto eh?), ma nel caso questo elemento sia una cartella, una volta aperta, il menù laterale non mi mostra gli elementi interni come faceva col primo livello.
    Come potrei fare?
    Grazie a tutti e scusate per la lunga digressione...
      Sorry for my bad English grin
      • 15896
      • 80 Posts
      Cosa ti mostra? sempre il sottomenu iniziale da cui il file dipende?
        • 8471
        • 333 Posts
        si, sempre quello
          Sorry for my bad English grin
          • 15896
          • 80 Posts
          Questo perchè lo script va a trovare sempre il parent che dipende dal root e mostra il sottomenu da quella posizione

          al momento, questa parte dello script
          while ($pid['id'] != 0) {
              $id = $pid['id'];
               $pid = $modx -> getParent($id, 1, "id");
              }


          è ricorsivo e va sempre a trovare l’ultimo parent in linea che dipende da root. Per farlo funzionare nel tuo caso dovrebbe essere sufficiente eliminare questa parte del codice. Allora lo script si ferma al primo parent diretto che trova.
          Però avrai degli effetti collaterali.
          1) se la pagina che hai cliccato non ha delle pagine sottostanti non verrà mostrato alcun menu
          2) se nella navigazione sarai sceso di x livelli non avrai più traccia del punto in cui ti trovi

          Per ovviare, potresti usare un menu come quello che ho realizzato con MooFx che lo trovi qui http://www.kimu.it/modxcms-download.html. Ti permette di avere almeno 2-3 sottolivelli in un menu (realmente infiniti ma poi diventa poco leggibile secondo me), il primo è quello diretto, il secondo è quello che appare una volta cliccato sul menu, il terzo può essere un - ul li ul - a cui puoi dare un margin per indentarlo ed evidenziarlo.

          Inoltre, ti consiglio di usare qualcosa come Breadcrumbs, che trovi nel repository che mostra una catena di link (almeno dovrebbe farlo, mai testato veramente, uso una mia soluzione personale per questo) di tutte le pagine da cui se passato per arrivare alla pagina attuale e così facilmente poter tornare indietro.

          Ciao
            • 8471
            • 333 Posts
            Grazie 1000 kimu!
            Gli effetti collaterali che hai menzionato non mi interessano, quindi la modifica è perfetta... ora guarderò anche gli snippet che mi hai segnalato comunque.
              Sorry for my bad English grin
              • 11807
              • 21 Posts
              Anche per il design del sito a cui sto lavorando ho optato per un menù superiore orizzontale e uno laterale verticale "variabile" a seconda della categoria selezionata in quello superiore.

              Per quello orizzontale superiore ho usato:
              [!Wayfinder?startId=`0` &level=`1` &outerClass=`topnav`!]

              Per quello verticale laterale ho usato:
              [[Wayfinder? &level=`1` &startDoc=[*UltimateParent*]]]

              Inoltre ho usato il breadcrumbs per indicare il percorso di navigazione.
              L’"effetto collaterale" però è esattamente uno di quelli descritti nel penultimo post, e cioè
              1) se la pagina che hai cliccato non ha delle pagine sottostanti non verrà mostrato alcun menu (nella barra laterale)

              Come sarebbe possibile ovviare a tale problema, facendo in modo che se mi trovo in una pagina o in una cartella priva di sottopagine il menù laterale non venisse "svuotato"?

              -----------------------------------

              Un’idea potrebbe essere quella di creare un UltimateParent modificato, da usare solo per il menù laterale, che verificasse se la pagina in cui mi trovo abbia o meno sottopagine, in caso negativo restituisse come valore... l’ultimateparent dell’ultimateparent (ehm, o il parent dell’ultimateparent)

              -----------------------------------

              Per chi potesse interessare... il problema è stato risolto (non da me grin) in questo post
              http://modxcms.com/forums/index.php/topic,10724.0.html