Перенаправление после регистрации в Drupal 7.

Раздел: 
Перенаправление после регистрации в Drupal 7.. Интернет, IT

Обнаружила, что после регистрации вместо того, что показать посетителям системное сообщение о том, что им надо проверить их электронный ящик, Drupal 7 просто перенаправляет их на главную страницу. Это очень плохо, т.к. пользователи не могут понять, почему они не могут .зарегистрироваться и просто уходят.

У меня версия 7.56, и до обновления все работало, так что подозреваю, что это проблема в версии.

Варианты решения проблемы.

Поиск в сети показал, что данная проблема актуальна не только для меня.

В качестве решения проблемы редиректа на Главную предлагается сделать модуль для перенаправления на кастомную страницу. А на этой странице выдать пользователю информацию о том, что надо проверить электронную почту.

Код для модуля здесь предложили такой:

 <?php
/*redirect after user register to page check your mail message*/
function redirect_after_regisration_form_alter(&$form, &$form_state,$form_id) {
  switch ($form_id) {
    case 'user_register_form':
          $form['#submit'][] = 'redirect_after_regisration_user_register_submit';
      break;
  }
}

function redirect_after_regisration_user_register_submit($form, &$form_state) {
  $form_state['redirect'] = 'node/2';
}
?>

Где, 'node/2' – любая ваша заданная страница. Не проверяла его на работоспособность, но для большей гибкости решения проблемы перенаправления после регистрации может пригодиться.

Были предложения организовать показ сообщения о регистрации с помощью задания правила через Rules. У меня не получилось, у человека, которому это советовали, тоже.

Как я убрала перенаправление и вывела сообщение.

Меня перенаправление не устраивает, поэтому я решила выяснить причину, по которой после регистрации происходит перенаправление на Главную вместо показа системного сообщения.

Причина в файле /modules/user/user.module.

Даже и не знаю для чего, но есть в нем есь одна строчка в конце:

// No administrator approval required.

  elseif ($account->status || $notify) {

    $op = $notify ? 'register_admin_created' : 'register_no_approval_required';

    _user_mail_notify($op, $account);

    if ($notify) {

      drupal_set_message(t('A welcome message with further instructions has been e-mailed to the new user <a href="@url">%name</a>.', array('@url' => url($uri['path'], $uri['options']), '%name' => $account->name)));

    }

else {

      drupal_set_message(t('A welcome message with further instructions has been sent to your e-mail address.'));

      $form_state['redirect'] = '';

    }

Что означает, что после заполнения формы регистрации пользователи показывается системное сообщение и происходит перенаправление на главную. Т.е. сообщение, может, и показывается, но сразу же происходит редирект на Главную и пользователю остается лишь недоумевать.

Решение: убрать строчку с редиректом:

else {

      drupal_set_message(t('A welcome message with further instructions has been sent to your e-mail address.'));

    }

Решение простое, но есть у него один недостаток: при обновлении файл заменится новой версией. Поэтому, придется или запретить право на запись этого файла, либо сделать пометочку для себя и просмотреть код этого файла в новой версии Drupal 7.