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

    j’avance pas à pas dans ModX avec grand bonheur, et quelques moments de solitude aussi....

    Je souhaite récupérer la liste des ID des enfants d’un document parent $UParentID (pour Ultimate Parent ID). J’ai donc inclus dans mon snippet la ligne suivante :
    $UChildIDs = $modx->getChildIds($UParentID,1); 


    Au final, la variable $UChildIDs a bien le même nombre de case que le nombre d’enfants de $UParentID de niveau 1, sauf que les cases sont étrangement vides....

    Voici le code complet :
    /* Récupération du parent ultime de niveau 1 */
    $UParentID = $modx->runSnippet('UltimateParent', array('topLevel' =>'2'));
    /* Boucle sur les enfants du parent ultime de niveau 1 -  donne donc la liste des entrées de niveau 2*/ 
    $UChildIDs = $modx->getChildIds($UParentID,1); 
    
    for ($I=0;$I<count($UChildIDs);$I++) {
    	$Menu[]=$UChildIDs[$I];
    }
    return join($Menu, "\n");
    


    Quelqu’un a une idée, franchement, je pète les plombs....

    Merci d’avance pour votre patience.

    Enzo
      Equilibre Webdesign - Conception et r
      • 21946
      • 283 Posts
      Salut
      je ne suis pas sur de pouvoir t’aider mais Ca affiche quoi quand tu fais?

      echo "<pre>";
      print_r($UChildIDs);
      echo "</pre>";

        [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
        • 8930
        • 44 Posts
        nyl auster, ooooooohhhhhhhhhh que si tu m’a aidé!!!!!!!!!!!!

        Voici le retour:

        Array
        (
        [11] => 11
        [13] => 13
        )

        Le résultat n’est donc pas vide et contient bien les ID des enfants. Par contre, impossible d’utiliser une boucle for vu que le tableau utilise des index par nommage et non par numéro....
        Après des recherches, j’ai compris qu’il fallait en fait utiliser une boucle foreach pour exploiter la sortie de getChildIds. Voici le code qui fonctionne :
        foreach ($UChildIDs as $clef=>$ID) {
        	/*Get Doc info*/
        	$docinfo=$modx->getDocument($ID,'id,pagetitle');
        	/* Build Menu entry */
        	if ($modx->runSnippet('UltimateParent', array('topLevel' =>'2')) === $ID) {
        		$Menu[]='<dd class="MenuConcept" id="MenuConceptHere"><a href="[(site_url)]index.php?id='.$ID.'" title="'.$docinfo['pagetitle'].'"><img src="[(site_url)]assets/templates/Giorni/images/TEXTE--White-ref-'.$docinfo['pagetitle'].'.png"></a></dd>';
        	} else {
        		$Menu[]='<dd class="MenuConcept"><a href="[(site_url)]index.php?id='.$ID.'" title="'.$docinfo['pagetitle'].'"><img src="[(site_url)]assets/templates/Giorni/images/TEXTE-ref-'.$docinfo['pagetitle'].'.png"></a></dd>';
        	}
        }
        


        Merci infiniment pour ton aide, elle m’est très précieuse. wink

        Sincèrement.

        Enzo
          Equilibre Webdesign - Conception et r
          • 11975
          • 2,542 Posts
          Salut,

          juste un petit truc.
          Dans ta boucle tu executes une requete par doc ce qui n’est pas forcément judicieux en terme de charge serveur.
          Autant utililer le tableau d’ids retourné par getChiIdIds comme variable de la fonction getDocuments qui n’executera qu’une requete.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 8930
            • 44 Posts
            mmmmmmmmhhhhhhhh, je vois la subtilité. Merci pour ce rafinement heliotrope.

            Sincèrement
              Equilibre Webdesign - Conception et r