Получение полей в ресурсах потомках,MODx Revolution

Получим заголовок текущего документа, потомка и потомка-потомка

// получаем объект    
$res = $modx->getObject('modResource', $modx->resource->get('id'));
$f = $res->get('parent');
echo 'Название текущего ресурса : '.$res->get('pagetitle');
// если есть потомок
if ($f != 0) {
    $res2 = $modx->getObject('modResource',$f);
    echo 'Название ресурса-потомка : '. $res2->get('pagetitle');
    $gf = $res2->get('parent');
    // если есть потомок    
    if ($gf != 0) {
        $res3 = $modx->getObject('modResource',$gf); 
        echo 'Название ресурса-потомка-потомка : '.$res3->get('pagetitle');
    }
}    

Рекурсивный обход дерева (неизвестно количество предков)

function getParent($id) {
    Global $modx;
    // если потомок есть, то определяем его заголовок и вызываем функцию для определения следующего предка
    if ($id != 0) {
       $res = $modx->getObject('modResource',$id);
        echo $res->get('pagetitle');
        $id = $res->get('parent');
        getParent($id);
    }
  
}

$res = $modx->getObject('modResource', $modx->resource->get('id'));
// заголовок текущего ресурса
echo $res->get('pagetitle'); 
$id = $res->get('parent');
// вызываем функцию и передаем id потомка
getParent($id);