当用户登录Drupal时,我如何重定向用户,除非他们下订单?

当用户登录Drupal时,我如何重定向用户,除非他们下订单?,drupal,redirect,ubercart,Drupal,Redirect,Ubercart,我想在用户登录到我的站点时将其重定向到特定页面。我目前在hook_用户中执行此操作: if($op == 'login') { drupal_goto('defaut'); } 这基本上很好用。但是,我使用Ubercart接受订单,并将其配置为自动登录新用户。这发生在触发将订单状态更新为“已完成”的条件操作之前。这意味着当用户自动登录时,my hook_user会重定向用户,并绕过剩余的订单处理 目前,我正在通过检查调用函数uc\u cart\u checkout\u complete在调

我想在用户登录到我的站点时将其重定向到特定页面。我目前在hook_用户中执行此操作:

if($op == 'login') {
  drupal_goto('defaut');
}
这基本上很好用。但是,我使用Ubercart接受订单,并将其配置为自动登录新用户。这发生在触发将订单状态更新为“已完成”的条件操作之前。这意味着当用户自动登录时,my hook_user会重定向用户,并绕过剩余的订单处理

目前,我正在通过检查调用函数uc\u cart\u checkout\u complete在调用堆栈中的某个位置的debug\u backtrace来解决这个问题,但这听起来是一种非常肮脏的解决方法


有谁能建议一种更干净的方法来实现我的条件重定向,而不必对Ubercart的大块进行黑客攻击吗?

您可以使用Ubercart的钩子(例如,Ubercart的钩子订单、钩子购物车等,请参见Ubercart\docs\hooks.php),添加
$\u会话['no\u redirect']=true此处,并更改重定向:

if($op == 'login' && !$_SESSION['no_redirect']) {
  unset($_SESSION['no_redirect']);
  drupal_goto('defaut');
}

事实证明,Ubercart在创建新用户帐户时已经设置了$_SESSION['new_user',],所以我可以在我的钩子中测试一下。