Контент в зависимости от группы пользователя

Доброго времени суток, некоторое время назад столкнулся с необходимостью выводить различный контент разным группам пользователей. Например давать ссылку на просмотр статистики только руководству и админу.

Поскольку в modx не особо силен я написал свой сниппет, который собственно все это и обеспечивал, но я почти уверен, что это можно реализовать и штатными методами и меньшими ресурсами по нагрузке.
вот сам сниппет, в который можно одновременно передать несколько необходимых групп, а так же роль в группе
<?php
$User = $modx->user->get('id');
$query = "SELECT user_group FROM modx_member_groups WHERE member = ".$User;//тут запрашиваем все группы пользователя
if($role){
    $query .= " AND role = $role";//если нужно передаем еще и роль в группе (например member - естесственно в id роли)
}
$res = $modx->query($query);
$groups = $res->fetchAll(PDO::FETCH_ASSOC);
$groupp = array();
foreach ($groups as $group) {
    array_push($groupp,$group['user_group']);//передаем все полученные группы в массив
}
$gr = explode(",", $idGroup);
foreach ($gr as $g){
    if(in_array($g,$groupp)){ // проверяем есть ли пользователь в нужных нам группах
        echo 1;// если есть - возвращаем 1
        break;
    };
}
все это вызывается у меня через сниппет if, короче бардак и костыли…
подскажите более оптимальный вариант решения
Арсений
29 августа 2017, 14:51
modx.pro
676
0

Комментарии: 1

Павел Гвоздь
29 августа 2017, 21:02
+1
Используйте не echo, а return в сниппетах. И для определения группы юзера используйте Феном:
{1 | ismember : 'Administrator'} // true
{0 | ismember : ['Administrator', 'Manager']} // false
Вот здесь подробнее о модификаторах Феном в MODX.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1