Допустим есть задача: переадресовать на страницу "В разработке" пользователей c определёнными ролями (У меня все пользователи, не умеющие роли 'content-manager' и 'administrator"). При этом переадресовывать будет только с некоторых страниц.
Список страниц с которых мы будем переадресовывать хранится через запятую в textarea в настройках темы поле (variable_get('site_pages_build', '')). Как это реализовать - объяснять не буду :)
Дальше пишем функции:
Ну и вызвать это дело можно таким образом:
И да, это можно было сделать и через рулс. Но как-то проще написать 10 строк кода, чем подключать кучу хлама :)
Список страниц с которых мы будем переадресовывать хранится через запятую в textarea в настройках темы поле (variable_get('site_pages_build', '')). Как это реализовать - объяснять не буду :)
Дальше пишем функции:
// проверка роли у пользователя function my_user_has_role($roles) { global $user; return !!count(array_intersect(is_array($roles)? $roles : array($roles), array_values($user->roles))); }; // Проверка страницы на которой находится пользователь function is_build_page(){ $pages = variable_get('site_pages_build', ''); $pages = explode(",", $pages); foreach($pages as $url) { $url_replaced = str_replace(' ', '', $url); if($url_replaced == current_path()) { return true; } } return false; }
Ну и вызвать это дело можно таким образом:
function hook_preprocess_html(&$vars) { if (!my_user_has_role(array('content-manager', 'administrator')) && is_build_page()) { drupal_goto("node/516"); // Страница "В разработке", созданная заранее. } }
И да, это можно было сделать и через рулс. Но как-то проще написать 10 строк кода, чем подключать кучу хлама :)