3

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

4

3 回答 3

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,在上面的示例中,返回到登录屏幕。

于 2012-10-18T13:51:11.953 回答
6

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

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) */);
}
于 2012-10-18T20:23:47.700 回答
0

在 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

于 2014-11-29T11:10:37.477 回答