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

    Quelqu’un pourrait il (m’) expliquer comment arriver à pouvoir passer un chunk en argument d’un snippet [[ &tpl = ]] et comment lui définir des "placeholders"
    du style [[+url+]] [[+title+]] etc ??

    j’ai essayé de comprendre à partir de bout de code trouvé sur le forum mais c’est loin d’être clair huh et je trouve pas d’infos/tutorial..
    Y aurait il une bonne âme à vocation pédagogique ? laugh

    $pages = isset($page_array)? $page_array : '';
    $template = isset($tpl) ? $tpl : 'SetOfPagesChunk';
    if ($pages) 
    
    {
    	$pages = explode(',',$pages);
    	foreach ($pages as $root)
    	{
    		$doc = $modx->getDocument($root);
    		$displayTitle = $doc['longtitle'];
    		$content = $doc['content'];
    		[b]$modx->setPlaceholder('link', $activeRoot);		
    		$modx->setPlaceholder('displayTitle', $displayTitle);		[/b]
    		$modx->setPlaceholder('content', $content);
    		$finalString .= $modx->getChunk($template);
    	}
    }
    return $finalString;


    et j’ai trouvé ça aussi mais tongue
    Use the $modx->parseChunk() function to replace the placeholders on each loop, as described http://modxcms.com/forums/index.php/topic,16237.msg103778.html#msg103778

    Pour l’instant ma (maigre) pagination se fait depuis le snippet :
    $sql = $modx->dbQuery(’select * from ’.$modx->getFullTableName(’favorite_links’). ’ where lieux = "’ . $lieux . ’" and rubriques = "’. $rubriques .’" ’);
    echo $sql .’
    ’;
    echo $row[’url’].’
    ’;
    // Loop through records and echo the pagetitle
    while ( $row = $modx->fetchRow( $sql ) ){
    echo $row[’url’].’
    ’;
    echo $row[’tags’].’
    ’;
    echo $row[’intro’].’
    ’;
    echo $row[’rubriques’].’
    ’;

    Je souhaiterai la gérer comme il se doit par un chunk..

    Merci, merci merci d’avance.
      • 867
      • 241 Posts
      $output.= $modx->parseChunk(’recordList’, $modx->placeholders, ’[+’, ’+]’);

      Je ne comprend pas : $modx->placeholders, ’[+’, ’+]’);
      faut il mettre quelque chose entre les +’ ’+ ?
        • 11975
        • 2,542 Posts
        Salut,

        alors pour la fonction parseChunk:
        1er argument => le nom du chunk
        2eme argument => un tableau clés <=> valeurs
        Ex: id=>45,pagetitle=>mon titre

        3eme=> prefixe des placeholders => [+id
        4eme=> suffixe des placeholders => id+]

        Donc


        while ( $row = $modx->fetchRow( $sql ) ){
        $data = array();
        $data[’url’] = $row[’url’];
        $data[’tags’] = $row[’tags’];
        $data[’intro’] =$row[’intro’];
        $data[’rubriques’] = $row[’rubriques’];
        $output .= $modx->parseChunk(’monChunk’,$data);//le 3et 4 eme arguments sont optionnels
        }

        Avec monChunk:


        [+url+]
        [+tags+]
        [+intro+]
        [+rubriques+]
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
          • 867
          • 241 Posts
          C’est déja bcp plus clair merci Helio smiley


            • 8894
            • 114 Posts
            J’ai une question concernant ceci:
            $modx->parseChunk(’monChunk’,$data);//le 3et 4 eme arguments sont optionnels
            Quand je regarde le code de la fonction dans le fichier manager/includes/document.parser.class.inc.php, la déclaration de la fonction est la suivante:
            function parseChunk($chunkName, $chunkArr, $prefix= "{", $suffix= "}") {

            Dans l’exemple donné, ne faudrait-il donc pas préciser les 3e et 4e arguments:
            $modx->parseChunk('monChunk', $data, '[+', '+]');
              • 11975
              • 2,542 Posts
              Bien vu  grin

              :-)

              Edit:
              A vrai dire je prefere utiliser la class chunkie de bS pour parser les chunks.
              Elle est plus flexible et permet l’emploi des tags PHx.

              :-)
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 867
                • 241 Posts
                Enidan merci pour le coup d’oeuil.

                Helio (ou qui voudra wink : J’ai repris ton code
                while ( $row = $modx->fetchRow( $sql ) ){
                $data = array();
                etc..

                Crée un chunk correspondant mais rien ne s’affiche.

                Faut il également utiliser setPlaceholder ?
                J’ai essayé ça à la suite de l’output mais ça ne change rien.
                $modx->setPlaceholder(’url’, $data[’url’] );

                Il manque une étape ?


                la class chunkie de bS
                ? bS huh

                Merci again,
                  • 11975
                  • 2,542 Posts
                  Salut

                  while ( $row = $modx->fetchRow( $sql ) ){
                  $data = array();
                  $data['url'] =  $row['url'];
                  $data['tags'] = $row['tags'];
                  $data['intro'] =$row['intro'];
                  $data['rubriques'] = $row['rubriques'];
                  $output .= $modx->parseChunk('monChunk',$data,'[+','+]');//rajoute les 3eme et 4eme arguments
                  }
                  
                  
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 867
                    • 241 Posts
                    Hello helio

                    $output .= $modx->parseChunk(’monChunk’,$data,’[+’,’+]’);//rajoute les 3eme et 4eme arguments

                    Ben c’est ce que j’avais fait, chez moi : (après la remarque de enidan)
                    $output .= $modx->parseChunk('ListChunk',$data, '[+', '+]'); //le 3et 4 eme arguments sont optionnels


                    Pourtant.. rien.
                    et setPlaceholder ça ne sert pas à cela ?
                      • 11975
                      • 2,542 Posts

                      et setPlaceholder ça ne sert pas à cela ?

                      Non ce n’est pas sa fonction, ou disons pas pour ce que tu veux faire.

                      Dans ton cas tu cherches à remplacer des placeholders d’un chunk.

                      Le code devrait fonctionner.
                      Verifie que les noms des placeholders sont les bons dans ton chunk.
                      Que le chunk existe....

                      :-)
                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l