Вывести все ресурсы родителя - родителя

Здравствуйте, подскажите как вывести (id) всех ресурсов родителя-родителя через api modx.
Есть структура:
«Категория» — «подкатегории» — «ресурсы»
Как вывести все ресурсы (id) из «Категории» (т.е. не все подкатегории, а именно все ресурсы подкатегорий одной категории), с помощью api.
Пробую так
if(!$docs = $modx->getCollection('modResource', array(
            'parent' => $idkategor,
            'published' => 1,
            'deleted' => 0
            
        ))){return;}
        
        foreach($docs as $doc){
            $id = $doc->get('id');  
            echo $id.",";
        }
И естественно получаю id всех подкатегорий. Есть ли простой способ, направите на решение.
Переделал
if(!$docs = $modx->getCollection('modResource', array(
            'parent' => $idkategor,
            'published' => 1,
            'deleted' => 0
            
        ))){return;}
        
        foreach($docs as $doc){
            $id = $doc->get('id');
           
          $docs1 = $modx->getCollection('modResource', array(
            'parent' => $id,
            'published' => 1,
            'deleted' => 0
            )); 
           foreach($docs1 as $doc1){
            $id1 = $doc1->get('id');
            $idall=$id1.",".$idall; 
           }
           
        }
        echo $idall;
Все получилось, но может быть есть более красивое и быстрое решение
Борис И
01 июня 2016, 17:01
modx.pro
4 525
0

Комментарии: 5

Марат Марабар
01 июня 2016, 21:07
+1
Как вариант

$parentId= $modx->getParentIds($parent, 1);
$childIds = $modx->getChildIds($parentId[0], 1);
$result = array();

$q = $modx->newQuery('modResource', array('parent:IN' => $childIds));
$q->select('id');

if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$result[] = $row['id'];
	}
}


print '<pre>';
print_r($result);
print '</pre>';
Вызов сниппета

[[mySnippet? &parent=`[[*parent]]`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
5