В этой статье я покажу как можно ограничить вывод ресурсов в дереве ресурсов для определённых групп пользователей в админке. Например, для контент-менеджеров вывести только раздел со статьями. Зачем им показывать главную страницу, страницу с контактами или профилем.

Вариант 1

Делается это достаточно просто. В системных настройках есть параметр tree_root_id, в котором указывается корневой элемент (узел) дерева ресурсов. По-умолчанию, в нём указан 0. Что значит — выводить все ресурсы. Допустим, что у вас статьи находятся в разделе «Блог», у которого id равен 5. А контент-менеджеры находятся в группе «Content managers».
Откройте системное меню и найдите там пункт «Контроль доступа». В списке групп пользователей кликните правой кнопкой на группе «Content managers» и выберите «Редактировать группу пользователей». На вкладке «Настройка» добавьте новый параметр как указано на картинке

Теперь, чтобы добавленная настройка вступила в действие, нужно сбросить все сессии. Делается это в меню Управление > Завершить все сеансы. Теперь менеджерам в дереве ресурсов будет выводится только раздел «Блог» и его потомки.

Точно такую же настройку можно добавить и для отдельного пользователя.

Вариант 2

Указать корневой узел можно и динамически. Для этого создайте плагин для события «OnMODXInit» и добавьте соответствующее условие

<?php
if ($modx->event->name == 'OnMODXInit' && $modx->context->key == 'mgr') {
    if ($modx->user->isMember('Content managers')) { // Этот if можно добавить в первый. Я вынес его для наглядности.
        $modx->setOption('tree_root_id', 5);
    }
} 

На этом всё. Спасибо за внимание.

17 октября 2016, 12:49   1014     0

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.