Как обычно делаю сайт на Drupal и возникла вот такая задача: если пользователь не заполнил свою анкету, то при входе на сайт он должен перенаправляться на страницу с формой анкеты.
Сначала решил воспользоваться инструкцией, которая как раз, вроде, должна решать поставленную задачу: http://drupal.org/node/683696 Т.е. с помощью модуля trigger. Но почему-то перенаправления все никак не происходило. Порывшись на том же сайте нашел, что редирект происходит, если логиниться не из блока, а со страницы /user. Но мне-то надо из блока.
Решил, что буду дописывать свой модуль под это дело. Благо существует hook_user, позволяющий обработать вход пользователя на сайт:
function alex_module_user($op, &$edit, &$account, $category = NULL) { global $user; switch ($op) { case 'login': if (MAINTENANCE_MODE != "install") { $queryResult = db_result(db_query('SELECT COUNT(*) AS number FROM {node} n WHERE n.uid = %d AND n.type="profile"',$user->uid)); if ($queryResult == 0) { drupal_set_message('Заполните пожалуйста персональную информацию'); //drupal_goto('node/add/profile'); header('Location: http://'.$_SERVER['SERVER_NAME'].'/node/add/profile'); exit; } } break; }
Обратите внимание, что строка drupal_goto('node/add/profile'); закомментирована. По началу я пытался использовать именно эту функцию для редиректа, но редиректа не происходило, при чем опять же только из блока(со страницы с формой входа на сайт все работает). Т.е. можно сделать вывод, что при входе на сайт из блока не срабатывает функция drupal_goto().
Если я Вам помог, то меня можно поблагодарить.
Отправить комментарий