我想对一些Magento核心文件进行更改。为了确保更改是未来证明,我将文件从code / core / Mage复制到code / local / Mage。
我保持文件结构和文件名一致。问题是当我这样做时,更改没有效果(我已刷新缓存)
我出错的任何想法?如果我直接编辑核心文件,则会发生更改。
答案 0 :(得分:3)
您应该创建一个新的本地模块并在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中激活你的模块。
答案 1 :(得分:0)
上面的海报是正确的,编辑核心功能的首选方法是使用重写。但在某些情况下,这是不可能的,在这种情况下,您应该能够将核心文件放入/app/code/local/Mage
目录以使其工作。块和模型文件应该以这种方式立即工作,如果我没记错的话,控制器也应如此。其他文件(例如配置文件)可能不是自动的。
您是否可以发布未按预期响应的特定文件的详细信息?调试细节比一般性更容易。此外,除了刷新普通缓存之外,还要确保已关闭服务器上安装的所有操作码缓存。
谢谢, 乔
答案 2 :(得分:0)
您可以使用local.xml
轻松覆盖xml设置。因此,如果您要覆盖/添加到app/code/core/Mage/Customer/etc/config.xml
,只需将其添加到app/etc/local.xml
。