Как вы можете видеть в user_register_submit обработчик отправки , $form_state['submit']
жестко закодирован.
Это означает, что user_register_submit будет определять пункт назначения, если вы не переопределите его.
Это можно сделать, добавив собственный обработчик отправки (псевдокод).
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == "user_register") {
//Look at the code in user_register_submit for all the ifs and switches to only
// add this extra handler when a normal user signs up.
$form['#submit'][] = "_mymodule_user_register_submit";
}
}
function _mymodule_user_register_submit($form, &$form_state) {
$form_state['redirect'] = $_GET['q']; //Adds the current url as redirect.
}
Затем, используя веса в системной таблице, убедитесь, что ваши модули запускаются после пользовательского модуля.В противном случае они вызываются по алфавиту, пользовательский модуль идет после mymodule;сбросьте перенаправление снова.
И никогда, никогда не используйте drupal_goto()
в обработчиках отправки, потому что они остановят всю обработку и перенаправят пользователя, что приведет к сбою многих модулей и часто даже к поломке и несогласованности баз данных.