This question has been answered by Bruno17. See the first response.
I thinkis the getResource equivalent.&depth=`2`
&parents=`[[UltimateParent? &topLevel=`2`]]` //root = level 1
<?php
//[[getParentsAtLevel? &level=`1` &parents=`0`]]
$level = $modx->getOption('level', $scriptProperties, 1);
$parents = explode(',', $modx->getOption('parents', $scriptProperties, $modx->resource->get('id')));
$ids = $parents;
if (!function_exists('getLevelIds')) {
function getLevelIds($parents, $level) {
global $modx;
$ids = array();
foreach ($parents as $parent) {
$childids = $modx->getChildIds($parent, 1);
foreach ($childids as $id) {
$ids[] = $id;
}
}
$level = $level - 1;
if ($level > 0) {
$ids = getLevelIds($ids,$level);
}
return $ids;
}
}
if ($level > 0) {
$ids = getLevelIds($parents,$level);
}
$output = implode(',', $ids);
return $output;
&parents=`[[getParentsAtLevel? &level=`1` &parents=`0`]]`
try this:
snippet 'getParentsAtLevel'
<!--?php //[[getParentsAtLevel? &level=`1` &parents=`0`]] $level = $modx--->getOption('level', $scriptProperties, 1); $parents = explode(',', $modx->getOption('parents', $scriptProperties, $modx->resource->get('id'))); $ids = $parents; if (!function_exists('getLevelIds')) { function getLevelIds($parents, $level) { global $modx; $ids = array(); foreach ($parents as $parent) { $childids = $modx->getChildIds($parent, 1); foreach ($childids as $id) { $ids[] = $id; } } $level = $level - 1; if ($level > 0) { $ids = getLevelIds($ids,$level); } return $ids; } } if ($level > 0) { $ids = getLevelIds($parents,$level); } $output = implode(',', $ids); return $output;
call getResources like that:
&parents=`[[getParentsAtLevel? &level=`1` &parents=`0`]]`
play a bit with &level to get the correct parents of the wanted level.