Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
注销后Magento重定向_Magento_Magento 1.7 - Fatal编程技术网

注销后Magento重定向

注销后Magento重定向,magento,magento-1.7,Magento,Magento 1.7,注销后如何将客户重定向到magento中的默认商店视图? 在注销时,我将他们重定向到另一个商店视图。我知道这并不优雅,但我发现最简单的方法是将app/design/frontend/base/default/template/customer/logout.phtml中的模板文件复制并修改到您自己的主题目录中 具体而言,这一行: <p><?php echo Mage::helper('customer')->__('You have logged out and will

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

我知道这并不优雅,但我发现最简单的方法是将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\u Customer\u AccountController::logoutAction()
在调度
Customer\u logout
事件后,在响应对象上设置重定向到
::logoutSuccessAction()
,它是customer/logout.phtml模板的呈现,该模板使用PHP设置echo一个javascript参数以重定向到主页,而OOB不可能传递一个arg以进行基于JS的替代重定向

我认为最干净的解决方案是观察
controller\u action\u postdispatch\u customer\u account\u logout
,抓取controller对象,并使用响应对象的
setRedirectWithCookieCheck()方法覆盖位置头:

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

在模型>观察者中编写以下方法

public function customerLoggedOut(Varien_Event_Observer $observer)    
{    
    $observer->getControllerAction()
    ->setRedirectWithCookieCheck(CustomUrl);    
}
Customurl是注销后要重定向的url


如果您想要在登录、注销和注册后为您的电子商务网站定制url重定向的完整解决方案。自定义重定向扩展可以帮助您。点击链接获得分机

您需要扩展magento的默认
AccountController
,并使用自定义目标地址覆盖
logoutAction
。这个关于如何覆盖控制器的答案应该为您提供一个很好的起点:我认为您应该让
logoutAction
将您重定向到
logoutSuccessAction
,以便让magento重新初始化访客上下文(cookies)。例如,如果您将用户直接重定向到CMS/页面,您可能会遇到问题,因为magento Cookie将无法续订。宁愿覆盖
logoutSuccessAction
而不是
logoutAction
@Bixi有什么区别?从cookie的角度来看,logoutSuccess没有做任何其他页面所做的事情。这就像一个用户第一次来到一个主页。还是我遗漏了什么?@benmarks Yep抱歉,只有在MagentEnterprise FullPageCache被激活时才会出现问题。。当cms/页面已经用FPC缓存时,会出现一个错误,导致cookie创建无法工作,因为FPC绕过了通常用于cookie的一些顶级层init@Bixi-很高兴知道,但如果是这样,这会如何影响通常为CMS页面的主页?加载默认URL时是否有特殊情况?是否愿意分享下一票的原因?这是对这个问题的合理回答。
*/*/login
是Magento跟踪
模块/控制器/操作的方式
-请看这里哦,抱歉。我正在删除我的评论非常好的解决方案,通过阻止删除控件文件,非常感谢@philwinkle