2010-07-27 44 views
2

我想对一些Magento核心文件进行更改。为了确保这些变化是未来的证明,我将文件从代码/核心/法师复制到代码/本地/法师。Magento - 将文件添加到本地/法师不起作用

我保持文件结构和文件名一致。问题是,当我这样做的变化没有效果(我刷新了缓存)

任何想法,我哪里出错了?如果我直接编辑核心文件,则会发生更改。

+0

本地文件夹用于自定义模块。对于核心更改,您需要直接在代码/核心/法师中编辑它们。 – Rito 2010-07-27 11:55:51

+0

这不是推荐的方法。 – 2010-07-27 12:50:06

+0

Rito说的不对,你可以在本地编辑。 – 2010-07-27 14:11:47

回答

3

您应该创建一个新的本地模块,并定义在config.xml文件重写:

创建app/code/local/MyCompany/MyModule目录。添加子文件夹etcmodel

现在创建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中激活你的模块。

0

上面的海报是正确的,编辑核心功能的首选方法是使用重写。但在某些情况下,这是不可能的,在这种情况下,您应该能够将核心文件放入/app/code/local/Mage目录中以使其工作。块和模型文件应该以这种方式立即工作,如果我没有记错的话,控制器应该是这样。其他文件(如配置文件)可能不是自动的。

你能发布一个特定的文件的细节,没有如你所期望的那样响应吗?调试细节比普通更容易。此外,除了刷新普通缓存之外,还要确保已关闭了服务器上已安装的任何操作码缓存。

谢谢, 乔

+0

随着配置文件,你只需将你的模块config.xml或local.xml覆盖逐字。 – 2010-07-28 06:18:44

+0

您无法覆盖未实例化Mage类的类。所以,像Mage_Model_Catalog_Product_Abstract这样的东西不能这样做。基本上,它不适用于继承,因为这里使用了“普通”类名称。 – 2010-07-28 06:32:12

+0

我试图编辑的文件是: app> code> core> Mage> Customer> etc> config.xml 我试着将它复制到: app> code> local> Mage> Customer> etc> config.xml – a1anm 2010-07-28 09:15:43

0

您可以轻松地使用local.xml覆盖XML设置。所以,如果你想覆盖/添加到app/code/core/Mage/Customer/etc/config.xml你只需将它添加到app/etc/local.xml