在Drupal中的UberCart结账过程中重定向到注册页面而不是登录页面?

3

目前,如果用户未登录,在UberCart结账时会被重定向到“登录页面”。我需要将他们重定向到“注册”页面。

换句话说:

Go here: user/register
NOT here: user

关键在于使其与UberCart兼容。我知道你可以使用登录 toboggan 和其他技巧来完成,但是我无法使其与UberCart一起使用?
更新:
我仍然没有一个合适的解决方案,所以我为此添加了赏金。目前,如果您禁用了“匿名结账”,ubertcart会自动添加以下消息:
1.在进行结账之前,您必须先登录。 2.如果您还没有帐户,请立即注册。
这也是一个问题,因为如果您转到用户页面,它就没有意义了。因此,即使我硬编码将用户转发到“user/register?destination=cart/checkout”,每当它遇到“user?destination=cart/checkout”并且用户未登录时,也不起作用。
有任何想法吗?
更新2:
这就是魔法发生的地方:uc_cart.pages.inc 的第94行。
// Send anonymous users to login page when anonymous checkout is disabled.
if (!$user->uid && !variable_get('uc_checkout_anonymous', TRUE)) {
    drupal_set_message(t('You must login before you can proceed to checkout.'));
    if (variable_get('user_register', 1) != 0) {
    drupal_set_message(t('If you do not have an account yet, you should <a href="!url">register now</a>.', array('!url' => url('user/register', array('query' => drupal_get_destination())))));
  }
  drupal_goto('user', array('query' => drupal_get_destination()));
}

所以,基本上我需要一种方法来覆盖这种行为?(即不需要篡改核心代码?)

我很想听听你是如何解决这个问题的。 - Moshe Shaham
我按照一个网站上的建议使用了规则和令牌模块,但在另一个网站上,我添加了一个模块来为我进行检查。基本上,它只有一个“init”钩子,用于检查是否为注册路径,如果是,则为我执行重定向。在一个案例中它运行良好。如果您需要更多信息,请给我发私信。 - rockstardev
我添加了一个更新,说明为什么我的解决方案不是理想的。我知道我的解决方案是一个hack。 - rockstardev
pps. 使用logintoboggan,我找到了更好的解决方案,现在登录和注册表单都在“同一页”上。它们仍然在选项卡中,因此下一步是覆盖logintoboggan主题函数,以将选项卡更改为两列,以适应我的bootstrap主题。 - rockstardev
1个回答

2

您需要了解规则和令牌模块。当用户登录时,您将创建一个规则来重定向到TOKEN。确保还启用了令牌操作模块。


这不是正确的答案。请阅读整个问题。 - rockstardev
如果已经过去了将近4年,而你还没有弄清楚,我猜你可能永远也不会明白了。我已经转向基于Python的框架,你不必再处理这样的垃圾。如果Drupal不能满足你的需求,我建议考虑其他选项。 - xamox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接