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.