
<?php
//[!GetMyArtists? &artistsParent=`foo` &releasesParent=`foo`!]
if (isset($artistsParent)&&isset($releasesParent)){
$getTVs = array ('artistName','releaseTitle','releaseDate','pagetitle');
$releases = $modx->getDocumentChildrenTVarOutput($releasesParent, $getTVs);
$artistsarray = array();
$releasesarray = array();
if (count($releases)>0){
foreach ($releases as $key=>$release){
$release['releaseid']=$key;
$releasesarray[$release['artistName']][]=$release;
}
}
$artists = $modx->getDocumentChildren($artistsParent);
if (count($artists)>0){
foreach ($artists as $artistfields){
$artist=array();
$artist['releases'] = $releasesarray[$artistfields['pagetitle']];
$artist['pageid'] = $artistfields['id'];
$artistsarray[] = $artist;
}
}
print_r($artistsarray);
}
?>Array ( [0] => Array ( [releases] => Array ( [0] => Array ( [releaseTitle] => Composition No. 3 [artistName] => Aardvark Jazz Orchestra [releaseDate] => 1975 [pagetitle] => Composition No. 3 by Aardvark Jazz Orchestra [releaseid] => 41 ) [1] => Array ( [releaseTitle] => Composition No. 1 [artistName] => Aardvark Jazz Orchestra [releaseDate] => 2005 [pagetitle] => Composition No. 1 by Aardvark Jazz Orchestra [releaseid] => 42 ) ) [pageid] => 47 ) [1] => Array ( [releases] => Array ( [0] => Array ( [releaseTitle] => Oyster Love [artistName] => Lapslap [releaseDate] => 2009 [pagetitle] => Oyster Love by Lapslap [releaseid] => 39 ) [1] => Array ( [releaseTitle] => Scratch by Lapslap [artistName] => Lapslap [releaseDate] => 2005 [pagetitle] => Scratch by Lapslap [releaseid] => 40 ) ) [pageid] => 46 ) [2] => Array ( [releases] => Array ( [0] => Array ( [releaseTitle] => Composition No. 2 [artistName] => Collective 4tet [releaseDate] => 1999 [pagetitle] => Composition No. 2 by Collective 4tet [releaseid] => 31 ) ) [pageid] => 48 ) )
$artist['releases'] = $releasesarray[$artistfields['pagetitle']];
$artist['releases'] = $releasesarray[$artistfields['artistName']];


$getTVs = array ('artistName','releaseTitle','releaseDate','pagetitle','releasePrice','releaseLabel','releaseCover','catalogueNo');
<?php
//the call to create the placeholder before your ditto call
//[!GetMyArtists? &artistsParent=`foo` &releasesParents=`foo1,foo2,foo3`!]
//the call in your ditto-tpl to get the artist-releases
//[[GetMyArtists? &id=`[+id+]`]]
if (isset($id)){
$artistsarray=$modx->getPlaceholder('artistsarray');
$params=array();
//here come all your parameters for the nested ditto-call:
$params['display']='all';
$params['tpl']='DittoArtistReleasesTpl';
$params['documents']=$artistsarray[$id];
return $modx->runSnippet('Ditto',$params);
}
if (isset($artistsParent)&&isset($releasesParents)){
$getTVs = array ('artistName');
$artistsarray = array();
$releasesarray = array();
$parents=explode(',',$releasesParents);
foreach($parents as $releasesParent){
$releases = $modx->getDocumentChildrenTVarOutput($releasesParent, $getTVs);
if (count($releases)>0){
foreach ($releases as $key=>$release){
//$release['releaseid']=$key;
$releasesarray[$release['artistName']][]=$key;
}
}
}
$artists = $modx->getDocumentChildren($artistsParent);
if (count($artists)>0){
foreach ($artists as $artistfields){
//$artist=array();
//$artist['releases'] = implode(',',$releasesarray[$artistfields['pagetitle']]);
//$artist['pageid'] = $artistfields['id'];
$artistsarray[$artistfields['id']] = (isset($releasesarray[$artistfields['pagetitle']]))?implode(',',$releasesarray[$artistfields['pagetitle']]):'';
}
}
//print_r($artistsarray);
$modx->setPlaceholder('artistsarray',$artistsarray);
}
?>[!GetMyArtists? &artistsParent=`[*id*]` &releasesParents=`1000,2000,3000,4000`!] [!Ditto? &tpl=`DittoArtistListTpl`&display=`all`!]
<h3><a href=[+id+]>[+pagetitle+]</a></h3> <ul> [[GetMyArtists? &id=`[+id+]`]] </ul>
<li> <h4><a href=[+id+]>[+pagetitle+]</a></h4> <ul> <li>[+releaseTitle+]</li> <li>[+releaseDate+]</li> <li>[+releasePrice+]</li> <li>[+releaseLabel+]</li> <li>[+releaseCover+]</li> <li>[+catalogueNo+]</li> </ul> </li>
<h4><a href=[+id+]>[+pagetitle+]</a></h4> <ul> <li>[+releaseTitle+]</li> <li>[+releaseDate+]</li> <li>[+releasePrice+]</li> <li>[+releaseLabel+]</li> <li>[+releaseCover+]</li> <li>[+catalogueNo+]</li> </ul>
<h4><a href=48>Collective 4tet</a></h4> <ul> <li></li> <li></li> <li>11.00</li> <li>Leo Records</li> <li></li> <li></li> </ul><h4><a href=47>Aardvark Jazz Orchestra</a></h4> <ul> <li></li> <li></li> <li>11.00</li> <li>Leo Records</li> <li></li> <li></li> </ul><h4><a href=46>Lapslap</a></h4> <ul> <li></li> <li></li> <li>11.00</li> <li>Leo Records</li> <li></li> <li></li> </ul>
<h3><a href=[+id+]>[+pagetitle+]</a></h3> <ul> [[GetMyArtists? &id=`[+id+]`]] </ul>

//here come all your parameters for the nested ditto-call:
$params['display']='all';//Ditto-Parameter &display
$params['tpl']='DittoArtistReleasesTpl';//Ditto-Parameter &tpl
$params['documents']=$artistsarray[$id];
return $modx->runSnippet('Ditto',$params);<h3><a href=[+id+]>[+pagetitle+]</a></h3> <ul> [[Ditto? &parents=`1000,2000,3000` &filter=`artistName,[+pagetitle+],1`&tpl=`DittoArtistReleasesTpl`]] </ul>