2011-01-05 3 views
0

Ich habe einen TV namens "Kategorie" und ich möchte eine Liste aller Ressourcen unterhalb einer bestimmten Ressource (27) von diesem TV gruppiert. Nichts besonderes imho. Das ist mein Ansatz:GetResources-Snippet mit angegebenen ResourceIDs funktioniert nicht

<?php 
$resource_ids = $modx->getTree(27,1); # => 27 is the Container with the desired resources 
# We need the 'Kategorie'-TV of the resources 
$cat = $modx->getObject('modTemplateVar', array('name' => 'Kategorie')); 

# Map Resources to Category 
$resources_by_cat = array(); 
foreach ($resource_ids as $id) { 
    $resources_by_cat[$cat->getValue($id)][] = $id; 
} 

# Iterate over categories and output the resources 
foreach ($resources_by_cat as $cat => $ids) { 
    $joined_ids = join(",",$ids); # => eg "33,34,56" 
    print "<h2>".$cat."</h2>"; 
    print '<table class="references">'; 
    print ' 
    <tr> 
     <th class="title">Titel</th> 
     <th class="author">Von</th> 
    </tr> 
    '; 
    print $modx->runSnippet('getResources', array(
    "resources" => $joined_ids, 
    "includeTVs" => "1", 
    "tpl" => "referenceRow" 
)); 
    print '</table>'; 
} 
?> 

... was mir gut aussieht, sondern wirft diesen Fehler zu mir:

[2011-01-05 12:26:24] (ERROR @ /index.php) Error 42000 executing statement: Array ([0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1,2,15,18,27,23,30,3,4,22,24,26,47,5,6,7,8,9,10,11,12,14,13,17,16,19,20,49,50,21' at line 1) 

jemand weiß, was hier vor sich geht? Oder ist mein Ziel sogar besser?

UPDATE

ich auf die neueste Version von GetResources aktualisiert. Jetzt bekomme ich diese Fehlermeldung nicht. Aber es funktioniert nicht. Aber die Option "Eltern" funktioniert auch nicht.

Antwort

1

Ich habe stattdessen $modx->getDocument($id) verwendet und es funktioniert jetzt wie erwartet.

foreach($ids as $rid) { 
    $doc = $modx->getDocument($rid); 
    var_dump($doc); 
    // real output trimmed 
    }