重写购物​​车网址不适用于magento

时间:2015-07-07 12:55:11

标签: magento url-rewriting module

我想重新编写结帐购物车网址。我创建了一个模块,但它无法正常工作。我在模型中创建了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);
        }
} 
?>

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

1 个答案:

答案 0 :(得分:0)

我可能会以较少侵入性的方式使用Magento的事件观察系统来解决这个问题。您可以做的是将所有请求重定向到checkout/cart路由到您的新路由checkout/winkelwagen,如下所示:

<强>等/ 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;
}