我需要更改app \ code \ core \ Mage \ Tax \ Model \ Calculation \ Rate.php
if (!is_numeric($this->getRate()) || $this->getRate() <= 0) {
以
if (!is_numeric($this->getRate()) || $this->getRate() < 0) {
所以我想覆盖这个文件而不是更改核心文件夹。
请帮忙......
答案 0 :(得分:2)
首先,您需要在自定义模块的config.xml文件中重写核心Magento模型:
<config>
<modules>
<MyPackage_MyModule>
<version>0.0.1</version>
</MyPackage_MyModule>
</modules>
<global>
<models>
<mypackage_mymodule>
<class>MyPackage_MyModule_Model</class>
</mypackage_mymodule>
<tax>
<rewrite>
<calculation_rate>MyPackage_MyModule_Model_Calculation_Rate</calculation_rate>
</rewrite>
</tax>
</models>
</global>
</config>
您需要在此处创建新的Rate.php文件:MyPackage / MyModule / Model / Calculation / Rate.php并扩展核心Magento Tax Rate模型。最后,您应该添加所需的方法。您可以测试重写是否成功,如下所示:
class MyPackage_MyModule_Model_Calculation_Rate extends Mage_Tax_Model_Calculation_Rate {
/**
* Prepare location settings and tax postcode before save rate
*
* @return Mage_Tax_Model_Calculation_Rate
*/
protected function _beforeSave()
{
die("it works!");
}
}
现在,当您的新方法有效时,您可以添加所需的代码。
希望这有帮助! :)
答案 1 :(得分:1)
只需将自己的文件Rate.php添加到文件夹./app/code/local/Mage/Tax/Model/Calculation/Rate.php
如果文件存在,Magento将检查此文件夹,并在从核心加载之前对它们进行优先级排序,这意味着将不会加载文件./app/code/core/Mage/Tax/Model/Calculation/Rate.php
文件。
说明:
ROOT/app/core/ magento files (never do any changes)
ROOT/app/community/ installed modules etc ...
ROOT/app/local/ your own changes only for this installation