如何在登录到特定页面后重定向,该页面取决于在magento中单击登录的页面?

akt*_*akt 2 magento

如何在登录到特定页面后重定向,该页面取决于在magento中单击登录页面?我知道重定向会发生AccountController.php.但是如何获取客户登录页面的链接.我有两个不同的登录页面.

Sla*_*den 10

这实际上非常简单.您所要做的就是在您登录的页面上的某处插入下一个代码.

Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*'));
Run Code Online (Sandbox Code Playgroud)

它的作用 - 它将变量设置为Customer会话,该会话保存referrer页面的url.AccountController如果设置了变量,则会在登录后将该页面发回给该页面.

UPDATE

只是想我可能需要编辑帖子,因为信息不完整.正如我前段时间所了解的,实际上有2个会话密钥在登录后统治"返回/重定向"的逻辑:

  • before_auth_url:这应该设置为页面,您希望用户看到,如果他的登录名/密码没有通过验证
  • after_auth_url:这是您希望用户在成功登录后重定向到的URL

现在上面的解决方案有效,因为Magento会自动设置after_auth_url= before_auth_url如果前者没有设置.

这是一个快速示例:您在Checkout上有登录表单.因此,您希望用户在登录后重定向回Checkout.但是如果用户输入的有效凭据失败,则不希望将用户重定向回结帐.而不是你希望他们留在登录页面,所以他们有能力请求忘记密码电子邮件或重新注册.一旦他们能够登录,您希望他们回到Checkout.

与用例听起来一样复杂,它实际上很容易实现,并且还没有在Magento Checkout中完成.所以这是你需要设置的:

Mage::getSingleton('customer/session')
    ->setBeforeAuthUrl(Mage::getUrl('customer/account/login'));
Mage::getSingleton('customer/session')->setAfterAuthUrl(Mage::getUrl('*/*/*'));
Run Code Online (Sandbox Code Playgroud)

这是所有人:)