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

时间:2011-02-14 12:18:25

标签: drupal redirect ubercart

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

if($op == 'login') {
  drupal_goto('defaut');
}

这大部分工作正常。但是,我正在使用Ubercart接受订单,并将其配置为自动登录新用户。这是在触发将订单状态更新为“已完成”的条件操作之前发生的。这意味着当用户自动登录时,我的hook_user会重定向用户,并绕过剩余的订单处理。

目前,我正在通过在调用堆栈中的某处检查调试函数uc_cart_checkout_complete调试debug_backtrace来解决这个问题,但这听起来像是一种非常脏的方法来解决它。

任何人都可以建议一种更简洁的方法来实现我的条件重定向而不会破坏大块的Ubercart吗?

1 个答案:

答案 0 :(得分:0)

您可以使用ubercart的钩子(例如,ubercart的hook_order,hook_cart等,请参阅ubercart \ docs \ hooks.php),在那里添加$_SESSION['no_redirect'] = true;,并更改您的重定向:

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