Drupal:注册后保持同一页面

时间:2011-07-12 05:25:25

标签: php jquery drupal

我有一个带有注册表格的区块,我需要人们注册并留在同一个页面上,这可能吗?

我尝试了登录目标模块,但该功能似乎只适用于登录而不是注册。注册继续发送到用户个人资料页面。

1 个答案:

答案 0 :(得分:3)

正如您在user_register_submit submit handler中看到的那样,$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(),因为它们将停止所有处理并重定向用户,导致许多模块失败,甚至经常导致数据库损坏和不一致。