我想重写结帐购物车网址。我已经创建了一个模块,但它不起作用。我在模型中创建了 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 请建议我能做什么。
我可能会使用 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;
}