我知道它不优雅,但我发现最简单的方法是将模板文件复制并修改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>
Run Code Online (Sandbox Code Playgroud)
通过修改location.href url甚至超时,您可以将用户指向注销后的任何位置.例如:
<script type="text/javascript">
//<![CDATA[
setTimeout(function(){ location.href = '<?php echo $this->getUrl('*/*/login') ?>'},500);
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
同样,它并不优雅,但它应该是足够快的重定向,然后页面上的快速跳转将它们推送到另一个URL,在上面的示例中,返回到登录屏幕.
不幸的是,操作注销重定向位置没有方便的事件挂钩.
Mage_Customer_AccountController::logoutAction()
设置一个重定向到::logoutSuccessAction()
的响应对象后,该customer_logout
事件被分派,并且它的的渲染客户/ logout.phtml模板,使用PHP来设定回声一个javascript参数去重定向到没有OOB可能性主页传递一个这样的Arg替代基于JS的重定向.
我认为最干净的解决方案是观察controller_action_postdispatch_customer_account_logout
,获取控制器对象,并使用响应对象的setRedirectWithCookieCheck()
方法覆盖位置标头:
public function logoutRedirect($obs)
{
$obs->getControllerAction()
->setRedirectWithCookieCheck(/* your URL param(s) */);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9395 次 |
最近记录: |