We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18219
    • 826 Posts
    Bonjour,

    Chaque jour un défi nouveau :
    J’aimerais (toujours pour le site en cours de construction) faire afficher sur une page un rappel du contenu sous forme de sommaire du dossier Parent voir Arrière Parent (Exemple : au troisième niveau de mon arborescence, j’aimerais faire afficher en dessous de la bannière le résumé de la page du dossier situé au premier niveau à l’instar de ce qui existe déjà).

    J’ai pensé utiliser Newslisting mais il parcours l’arborescence vers les fils et non en remontant vers les dossiers Parent.

    Quelqu’un a une idée sur l’utilisation d’un snippet capable de faire cette fonction ?
    Pour le moment, je pars sur le développement d’un snippet spécifique à ce besoin.
      Marc
      I'm French... Sorry for my bad English, I use ' Google Translator' or other... but that remains that tools wink
      • 6726
      • 7,075 Posts
      Regarde du côté de ChildDocumentMapper

      Tu devrais pouvoir faire ce que tu veux avec smiley

      Si ça ne te suffit pas, regarde du côté de
      getdocumentchildren
      getdocumentchildrentvaroutput
      getdocumentchildrentvars
      getparent

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


        MODx est l'outil id
        • 1876
        • 835 Posts
        Bonjour

        Personnelement j’utiliserai getparent que je mettrai dans un Variable de Gabarit

        $modx->getParent(idparent,1,’summary’);

        Aour
          • 18219
          • 826 Posts
          Bonjour à tous,

          J’était absent toute la journée, je n’ai pas pu vous répondre.
          Je vous remercie de votre aide. Je vais étudier ces solutions.
          Je vous posterais mes investigations wink
            Marc
            I'm French... Sorry for my bad English, I use ' Google Translator' or other... but that remains that tools wink
            • 18219
            • 826 Posts
            Bonjour à tous,

            J’ai adopté l’idée d’Aour dans un snippet et j’obtiens un bon résultat.
            Seulement, je voudrais dans le cas où je suis sur la page Parent afficher un chunk au lieu du résultat de la fonction.
            Le problème est que le snippet interprete le code contenu dans le chunk est retourne aucune valeur pour les TV placés dans le chunk.

            Quelqu’un aurait une idée pour éviter que le snippet interprete le chunk ?
              Marc
              I'm French... Sorry for my bad English, I use ' Google Translator' or other... but that remains that tools wink
              • 1876
              • 835 Posts
              Salut

              Bon aller on va faire simple.

              Tu connais l’ID du parent puisqu’il est dans le script : $modx->getParent(idparent,1,’summary’);

              Il suffit au début du snippet de mettre un test :

              // retrouver ID de la page courante
              $docid = $modx->documentIdentifier;
              
              // tester si tu es sur la page parent
              if ($docid = idparent) 
                  {
                  chunk
                  }
              else
                  {
                  fonction 
                  }


              aour
                • 18219
                • 826 Posts
                Merci pour ta réponse Aour, mais j’avais déjà dépassé ce stade.

                Je reprends mes explications ds le détails.

                J’ai créer un chunk ’Summary’ :
                <h1>[*#longtitle*]</h1>
                [*#content*]
                


                J’ai ensuite mon snippet :
                /*
                *  Snippet : ShowSummary
                *  Description : Affiche le sommaire (contenu) du dossier parent
                *
                *-- Parametres --
                *  &idPage : id de la page courante
                *  &idTopFolder : id du dossier principal
                *  &field : champ à retourner
                */
                
                // ---------------------------------------------------
                // Parameters
                // ---------------------------------------------------
                
                if (!isset($idPage)) return "No id of page!";
                
                
                // ---------------------------------------------------
                // ShowSummary
                // ---------------------------------------------------
                $parent = $modx->getParent($idPage,1,'id, pagetitle, longtitle, content');
                if ($parent['longtitle'] != $idTopFolder) {
                	$output ="<h1>" .$parent['longtitle'] ."</h1>";
                	$output .= $parent['content'];
                }
                else {
                	$output =$modx->putChunk('Summary');
                }
                
                return $output;
                


                La où j’ai un problème c’est sur la ligne
                $output =$modx->putChunk('Summary');

                Même si je remplace par le contenu du chunk le résultat est le même.
                En fait les conteneurs [*#longtitle*] et [*#content*] ne sont plus interprétés puisqu’il n’appartiennet plus au gabarit mais sont dans le snippet. Le moteur MODx renvoie NULL.
                Dans le source de la page j’obtiens : <h3></h3> c’est tout.

                Donc comment faire afficher les les deux conteneurs [*#longtitle*] et [*#content*]
                  Marc
                  I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
                  • 1876
                  • 835 Posts
                  Bonjour,

                  Pourquoi compare tu :

                  if ($parent['longtitle'] != $idTopFolder)


                  C’est toujours vrai car tu compares une chaine de caractère avec une ID numérique.

                  Moi je ferais le if differement :

                  si la page courante != de la page parent
                  $parent = $modx->getParent($idPage,1,’id, pagetitle, longtitle, content’);
                  $output ="<h1>" .$parent[’longtitle’] ."</h1>";
                  $output .= $parent[’content’];

                  sinon

                  $output ="<h1>" .[’longtitle’] ."</h1>";
                  $output .= [’content’];

                  Je vois pas l’intérêt du chunk. désolé embarrassed

                  Aour



                    • 18219
                    • 826 Posts
                    Quote from: aour at Jan 13, 2006, 10:08 PM

                    Pourquoi compare tu :

                    if ($parent['longtitle'] != $idTopFolder)

                    C’est une erreur voila le bon code :
                    if ($parent['id'] != $idTopFolder) ...




                    $output ="<h1>" .[’longtitle’] ."</h1>";
                    $output .= [’content’];

                    Je vois pas l’intérêt du chunk. désolé
                    J’avais commencé par ce code :
                    $output ="<h1>[*#longtitle*]</h1>";
                    $output .= "[*#content*]";

                    qui ne fonctionnait pas alors je l’ai placé dans un chunk : même résultat.

                    Pourquoi les conteneurs changent ? De plus, le # disparaît alors qu’il permet d’afficher le QuickEdit sur ces variables. Comment retrouver cette fonctionnalité ?

                    J’ai encore des points à apprendre sur MODx wink
                    En fait je suis un peu perdu dans ces changements de conteneur en fonction du contexte.
                      Marc
                      I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink
                      • 18219
                      • 826 Posts
                      Le code que tu propose me donne une erreur de parser :
                              $output ="<h1>".['longtitle']."</h1>";
                              $output .= ['content'];
                      


                      erreur :
                      Parse error: parse error, unexpected ’[’ in /home/httpd/vhosts/www.jublains.fr/web/preview/manager/includes/document.parser.class.inc.php(691) : eval()’d code on line 27
                      J’ai essayé comme cela :
                              $output ="<h1>['longtitle']</h1>";
                              $output .= "['content']";
                      

                      Plus d’erreur mais je n’obtiens pas les informations souhaitées mais :

                      ['longtitle']
                      ['content']
                      
                        Marc
                        I&#39;m French... Sorry for my bad English, I use &#39; Google Translator&#39; or other... but that remains that tools wink