注销后如何将客户重定向到magento中的默认商店视图?在注销时,我将他们重定向到另一个商店视图。
3 回答
我知道这并不优雅,但我找到的最简单的方法是将模板文件复制并修改app/design/frontend/base/default/template/customer/logout.phtml
到您自己的主题目录中。
特别是这一行:
<p><?php echo Mage::helper('customer')->__('You have logged out and will be redirected to our homepage in 5 seconds.') ?></p>
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl() ?>'},5000);
//]]>
</script>
通过修改 location.href url 甚至超时,您可以在注销后将用户指向任何地方。例如:
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl('*/*/login') ?>'},500);
//]]>
</script>
同样,它并不优雅,但它应该是一个足够快的重定向,页面上的快速跳转会将它们推到另一个 url,在上面的示例中,返回到登录屏幕。
不幸的是,没有方便的事件挂钩来操作注销重定向位置。
Mage_Customer_AccountController::logoutAction()
在调度事件后在::logoutSuccessAction()
响应对象上设置一个重定向,它是customer/logout.phtml模板的呈现,它使用 PHP设置echo 一个 javascript 参数以重定向到主页,没有 OOB 可能传递一个 arg替代基于 JS 的重定向。customer_logout
我认为最干净的解决方案是观察,抓取控制器对象,并使用响应对象的方法controller_action_postdispatch_customer_account_logout
覆盖位置标头:setRedirectWithCookieCheck()
public function logoutRedirect($obs)
{
$obs->getControllerAction()
->setRedirectWithCookieCheck(/* your URL param(s) */);
}
在 Your Model > Observer 中编写以下方法。
public function customerLoggedOut(Varien_Event_Observer $observer)
{
$observer->getControllerAction()
->setRedirectWithCookieCheck(CustomUrl);
}
Customurl 是您要在注销后重定向到的 url。
如果您想要在登录、注销和注册后为您的电子商务网站自定义 URL 重定向的完整解决方案。自定义重定向扩展可以帮助你。单击链接以获取扩展名。http://www.magentocommerce.com/magento-connect/custom-redirection.html