重写购物车网址在 magento 中不起作用

问题描述 投票:0回答:1

我想重写结帐购物车网址。我已经创建了一个模块,但它不起作用。我在模型中创建了 config.xml 和 Url.php 但没有成功。我的代码是:etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Ghrix_Newcart>
          <version>1.0.0</version>
        </Ghrix_Newcart>
    </modules>
  <global>
    <rewrite>
      <ghrix_newcart_checkout_cart>
        <from><![CDATA[#^/checkout/winkelwagen#]]></from>
        <to><![CDATA[#^/checkout/cart#]]></to>
      </ghrix_newcart_checkout_cart>
    </rewrite>
   <models>
      <ghrix_newcart>
        <class>Ghrix_Newcart_Model</class>
      </ghrix_newcart>
      <core>
        <rewrite>
          <url>Ghrix_Newcart_Model_Url</url>
        </rewrite>
      </core>
    </models>
  </global> 
</config>

在模型/Url.php中

<?php
class Ghrix_Newcart_Model_Url extends Mage_Core_Model_Url {
    /**
    * Build url by requested path and parameters
    *
    * @param string|null $routePath
    * @param array|null $routeParams
    * @return string
    */
    public function getUrl($routePath = null, $routeParams = null) {
    if(strstr($routePath,'checkout')){
        //echo $routePath.'--ss--<br />';
    }
        if ( $routePath == 'checkout/cart' ) {          

                $routePath = 'checkout/cart';
            }
            return parent::getUrl($routePath, $routeParams);
        }
} 
?>

我已经正确创建了一个函数,但它对我不起作用。我希望我的结帐/购物车网址应该是 checkout/winkelwagen 请建议我能做什么。

php magento module url-rewriting
1个回答
0
投票

我可能会使用 Magento 的事件观察器系统以一种侵入性较小的方式来解决这个问题。您可以做的是将所有请求重定向到

checkout/cart
路由到您的新路由
checkout/winkelwagen
,如下所示:

etc/config.xml

<frontend>
    <events>
        <controller_action_predispatch_checkout_cart_index>
            <observers>
                <redirectCart>
                    <class>Ghrix_Newcart_Model_Observer</class>
                    <method>redirectCart</method>
                </redirectCart>
            </observers>
        </controller_action_predispatch_checkout_cart_index>
    </events>
</frontend>

模型/Observer.php

public function redirectCart(Varien_Event_Observer $observer)
{
    Mage::app()->getResponse()->setRedirect('/checkout/winkelwagen')->sendResponse();
    exit;
}
© www.soinside.com 2019 - 2024. All rights reserved.