Контент в зависимости от группы пользователя
Доброго времени суток, некоторое время назад столкнулся с необходимостью выводить различный контент разным группам пользователей. Например давать ссылку на просмотр статистики только руководству и админу.
Поскольку в modx не особо силен я написал свой сниппет, который собственно все это и обеспечивал, но я почти уверен, что это можно реализовать и штатными методами и меньшими ресурсами по нагрузке.
вот сам сниппет, в который можно одновременно передать несколько необходимых групп, а так же роль в группе
подскажите более оптимальный вариант решения
Поскольку в 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, короче бардак и костыли…подскажите более оптимальный вариант решения
Комментарии: 1
Используйте не echo, а return в сниппетах. И для определения группы юзера используйте Феном:
{1 | ismember : 'Administrator'} // true
{0 | ismember : ['Administrator', 'Manager']} // false
Вот здесь подробнее о модификаторах Феном в MODX.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.