2012-10-18 139 views
3

如何在注销后将客户重定向到默认商店视图中的magento? 在注销时,我将它们重定向到另一个存储视图。Magento注销后重定向

+1

您需要扩展magento的默认'AccountController'并用您的自定义目标地址覆盖'logoutAction'。关于如何重写控制器的这个答案应该给你一个好的起点:http://stackoverflow.com/questions/6980026/override-magento-controller –

+0

我认为你应该让'logoutAction'按照顺序重定向到'logoutSuccessAction'让magento重新初始化访问者上下文(cookies)。例如,如果您直接将用户重定向到CMS /页面,则可能会有问题,因为magento cookie不会被续订。比'logoutAction'优先重写'logoutSuccessAction' –

+0

@Bixi有什么区别? logoutSuccess不会从任何其他页面的cookie角度做任何事情。这就像用户首次进入主页一样。或者我错过了什么? – benmarks

回答

5

不幸的是,操作注销重定向位置没有方便的事件挂钩。

Mage_Customer_AccountController::logoutAction()设置后customer_logout事件调度响应对象上重定向到::logoutSuccessAction(),和它的客户/logout.phtml模板的渲染,它使用PHP来设置回声一个javascript参数去重定向到主页没有OOB可能性通过一个arg替代基于JS的重定向。

我认为最干净的解决办法是观察controller_action_postdispatch_customer_account_logout,抢遥控器的对象,并使用响应对象的setRedirectWithCookieCheck()方法覆盖Location头:

public function logoutRedirect($obs) 
{ 
    $obs->getControllerAction() 
     ->setRedirectWithCookieCheck(/* your URL param(s) */); 
} 
7

我知道这不是优雅,但我发现的最简单的方法是将模板文件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,在上面的例子中,返回到登录界面。

+1

小心分享downvote的原因?这是这个问题的合理答案。 – philwinkle

+0

'*/*/login'是Magento如何跟踪'module/controller/action' - 请看这里http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/geturl_function_parameters – philwinkle

+0

呵呵,笑一笑,对不起。我正在删除我的评论 – poepje

0

写在你的模型>观察下面的方法。

public function customerLoggedOut(Varien_Event_Observer $observer)  
{  
    $observer->getControllerAction() 
    ->setRedirectWithCookieCheck(CustomUrl);  
} 

Customurl是您想要在退出后重定向的网址。

如果您想在登录,注销和注册后为您的电子商务网站定制URL重定向的完整解决方案。自定义重定向扩展可以帮助您。点击链接获取扩展。 http://www.magentocommerce.com/magento-connect/custom-redirection.html