Я вот и пробовал сниппет написать, но функции типа getDocumentChild и пр. дают только первый уровень.
Был кончено вариант получат массив через getChildIds (или как там функция для получения id...) и потом проверять каждый id, но по-моему как-то коряво... В принципе можно было сделать так:
<?php
$childs=$modx->getAllChilds(12); //12 это id "каталога"
$childs2=$modx->getChildIds(12, 2);
...
?>
И отсеить из массива $childs2 все id, которые встречаются в $childs.
Но есть ли решение более элегантное...