我想对一些Magento核心文件进行更改。为了确保这些变化是未来的证明,我将文件从代码/核心/法师复制到代码/本地/法师。Magento - 将文件添加到本地/法师不起作用
我保持文件结构和文件名一致。问题是,当我这样做的变化没有效果(我刷新了缓存)
任何想法,我哪里出错了?如果我直接编辑核心文件,则会发生更改。
我想对一些Magento核心文件进行更改。为了确保这些变化是未来的证明,我将文件从代码/核心/法师复制到代码/本地/法师。Magento - 将文件添加到本地/法师不起作用
我保持文件结构和文件名一致。问题是,当我这样做的变化没有效果(我刷新了缓存)
任何想法,我哪里出错了?如果我直接编辑核心文件,则会发生更改。
您应该创建一个新的本地模块,并定义在config.xml文件重写:
创建app/code/local/MyCompany/MyModule
目录。添加子文件夹etc
和model
。
现在创建etc/config.xml
文件,其中包含:
<?xml version="1.0" encoding="utf-8?>
<config>
<modules>
<MyCompany_MyModule>
<version>0.1.0</version>
</MyCompany_MyModule>
</modules>
<global>
<models> <!-- type of class to rewrite -->
<catalog> <!-- base module to rewrite -->
<rewrite>
<product>MyCompany_MyModule_Model_Product</product>
</rewrite>
</catalog>
</models>
</global>
</config>
实现model/Product.php
与更改。最简单的方法是从基类继承并重写方法。
还记得在app/etc/modules中激活你的模块。
上面的海报是正确的,编辑核心功能的首选方法是使用重写。但在某些情况下,这是不可能的,在这种情况下,您应该能够将核心文件放入/app/code/local/Mage
目录中以使其工作。块和模型文件应该以这种方式立即工作,如果我没有记错的话,控制器应该是这样。其他文件(如配置文件)可能不是自动的。
你能发布一个特定的文件的细节,没有如你所期望的那样响应吗?调试细节比普通更容易。此外,除了刷新普通缓存之外,还要确保已关闭了服务器上已安装的任何操作码缓存。
谢谢, 乔
随着配置文件,你只需将你的模块config.xml或local.xml覆盖逐字。 – 2010-07-28 06:18:44
您无法覆盖未实例化Mage类的类。所以,像Mage_Model_Catalog_Product_Abstract这样的东西不能这样做。基本上,它不适用于继承,因为这里使用了“普通”类名称。 – 2010-07-28 06:32:12
我试图编辑的文件是: app> code> core> Mage> Customer> etc> config.xml 我试着将它复制到: app> code> local> Mage> Customer> etc> config.xml – a1anm 2010-07-28 09:15:43
您可以轻松地使用local.xml
覆盖XML设置。所以,如果你想覆盖/添加到app/code/core/Mage/Customer/etc/config.xml
你只需将它添加到app/etc/local.xml
。
本地文件夹用于自定义模块。对于核心更改,您需要直接在代码/核心/法师中编辑它们。 – Rito 2010-07-27 11:55:51
这不是推荐的方法。 – 2010-07-27 12:50:06
Rito说的不对,你可以在本地编辑。 – 2010-07-27 14:11:47