Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redirect 带有目标重定向的drupal表单_Redirect_Drupal_Drupal 6_Hook - Fatal编程技术网

Redirect 带有目标重定向的drupal表单

Redirect 带有目标重定向的drupal表单,redirect,drupal,drupal-6,hook,Redirect,Drupal,Drupal 6,Hook,我正在尝试什么应该是一个简单的代码行,但不工作。使用以下代码: drupal_goto("user/register?destination=/node/1"); 我将我的访问者发送到注册页面,一旦注册完成,他们点击提交按钮,我希望他们重新定向到节点/1 问题是我的网站是在hook_init中实现的,我的网站进入了一个无休止的循环 有人能建议我如何让代码执行一次或使用更合适的drupal钩子来实现我的代码吗?在执行重定向之前,您需要确保您尚未登录到node/1、user/register或其他

我正在尝试什么应该是一个简单的代码行,但不工作。使用以下代码:

drupal_goto("user/register?destination=/node/1");
我将我的访问者发送到注册页面,一旦注册完成,他们点击提交按钮,我希望他们重新定向到节点/1

问题是我的网站是在hook_init中实现的,我的网站进入了一个无休止的循环


有人能建议我如何让代码执行一次或使用更合适的drupal钩子来实现我的代码吗?

在执行重定向之前,您需要确保您尚未登录到node/1、user/register或其他不合适的路径,否则你只是盲目地重定向,这会导致循环,对吗?另外你还需要允许用户登录,对吗

因此,您可以首先确保用户未登录,并且他们还未处于向“用户”页面(或用户/注册)发送匿名用户的用户路径上:

然后使用
hook\u user\u login()
而不是
hook\u init()
执行
节点/1
重定向

根据我对您的用例的理解,至少这对我来说是有意义的


你可能还想考虑使用这个模块,它既有稳定的D6又有D7版本。

< P>听起来你需要确保你在登录之前没有登录,在节点/ 1,用户/登记器,或者其他不合适的路径,否则你只是盲目重定向,结果导致循环,对吗?另外你还需要允许用户登录,对吗

因此,您可以首先确保用户未登录,并且他们还未处于向“用户”页面(或用户/注册)发送匿名用户的用户路径上:

然后使用
hook\u user\u login()
而不是
hook\u init()
执行
节点/1
重定向

根据我对您的用例的理解,至少这对我来说是有意义的


您可能还想考虑使用具有稳定的D6和D7版本的模块。

< P>如果用户在提交注册表单时希望重定向发生,那么您将要通过执行<强> HookFuffFixIdIdIORIG/<强>,并添加'*重定向'属性来更改用户注册窗体。比如:

/**
 * Implementation of hook_form_FORMID_alter().
 * @param $form
 * @param $form_state
 * @return void
 */
function MYMODULE_form_user_register_alter(&$form, &$form_state) {
  $form['#redirect'][] = 'node/1';
}
这样,Drupal将注册用户,然后将其发送到node/1


现在,如果您希望在用户登录后发生这种情况(无论是“注册后”登录还是正常登录),那么您可能希望在“登录”操作的实现中使用drupal_goto()(即,
$op==“登录”

如果您希望在用户提交注册表时进行重定向,那么您需要通过实现hook\u FORMID\u alter并添加“#redirect”属性来更改用户注册表,如:

/**
 * Implementation of hook_form_FORMID_alter().
 * @param $form
 * @param $form_state
 * @return void
 */
function MYMODULE_form_user_register_alter(&$form, &$form_state) {
  $form['#redirect'][] = 'node/1';
}
这样,Drupal将注册用户,然后将其发送到node/1


现在,如果您希望在用户登录后发生这种情况(无论是“注册后”登录还是正常登录),那么您可能希望在“登录”操作的实现中使用drupal_goto()(即,
$op==“登录”

我认为将此添加到您的template.php中可以:

    function phptemplate_menu_item_link($link) {
      if ($link['tab_root'] == 'user' && !empty($_GET['destination'])) {
        $link['localized_options']['query'] = drupal_get_destination();
      }
      return l($link['title'], $link['href'], $link['localized_options']);
    }

我写了一篇关于我为什么要在这里做这件事的博客文章:还有一些其他的用户提示可能会有所帮助

我认为将此添加到您的template.php中可以做到:

    function phptemplate_menu_item_link($link) {
      if ($link['tab_root'] == 'user' && !empty($_GET['destination'])) {
        $link['localized_options']['query'] = drupal_get_destination();
      }
      return l($link['title'], $link['href'], $link['localized_options']);
    }

我写了一篇关于我为什么要在这里做这件事的博文:还有一些其他的用户提示可能会有所帮助

你能详细说明一下吗?是否将所有用户从hook_init()重定向到注册表?如果所有访问者都要登录或注册,为什么不直接将“用户/注册”设置为首页(通过管理页面)?重要的是我的用户通过电子邮件被邀请通过电子邮件中的链接加入群组。该链接将他们带到我的网站,在那里我的代码检查他们的电子邮件地址是否已注册。如果没有,我会将它们重定向到注册页面,但一旦完成,我需要将它们发送回原始页面,在那里它们可以继续加入组进程OK,那么请向我们展示执行重定向的代码,告诉我们您将其放置在何处,以及无休止的循环是什么样子的(从何处循环到何处?),您使用的是哪个版本的Drupal?您能详细说明一下吗?是否将所有用户从hook_init()重定向到注册表?如果所有访问者都要登录或注册,为什么不直接将“用户/注册”设置为首页(通过管理页面)?重要的是我的用户通过电子邮件被邀请通过电子邮件中的链接加入群组。该链接将他们带到我的网站,在那里我的代码检查他们的电子邮件地址是否已注册。如果没有,我会将它们重定向到注册页面,但一旦完成,我需要将它们发送回原始页面,在那里它们可以继续加入组进程OK,那么请向我们展示执行重定向的代码,告诉我们您将其放置在何处,以及无休止的循环是什么样子的(从何处循环到何处?),你使用哪个版本的Drupal?谢谢你的回答。hook\u user\u登录听起来像是我在寻找的答案。然而,我使用的是Drupal6,似乎没有一个等价的。谢谢你的回答。hook\u user\u登录听起来像是我在寻找的答案。然而,我使用的是Drupal6,而且似乎没有一个等价物。