Получение корневого родителя ресурса

09 Октября 2019 23:39

Под корневым родителем подразумевается ресурс, который не имеет родителей.

Пример:

Отмеченные галочками - это корневые. У них, как бы, тоже есть родитель - это 0, но для нас это не имеет значения.

Это может потребоваться, если, например, мы делаем какие-то уникальные элементы на сайте для конкретных разделов будь то поиск по разделу или меню для раздела.

<?php
$id = $modx->getOption('id', $scriptProperties, '');
if(!$id) return 'No id for search';

if(!function_exists('get_parent')) {
    function get_parent($modx, $id) {
        $object = $modx->getObject('modResource', array('id' => $id));
        $parent = $object->get('parent');
        if($parent != 0) {
            return get_parent($modx, $parent);
        }else{
            return $id;
        }
        
    }
}

echo get_parent($modx, $id);

Называем сниппет как хотим и вызываем с параметром &id=[[*id]]