我想覆盖核心模型类,但我找不到正确的方法。
我已经搜索了很多内容,但是一些示例显示了如何覆盖不在app/code/core/Mage/Core/Model
文件夹的模型,并且显示了一些示例如何覆盖子目录中的模型Core
dir,app/code/core/Mage/Core/Model/Resources/Eav/Mysql4/
。
我已经阅读了这些示例,但我仍然找不到覆盖它的方法。例如,我想覆盖app/code/core/Mage/Core/Model/Store.php
这是我使用的xml,但它不起作用。请帮我找出哪个部分是错的。提前谢谢!
app/etc/models/My_Core
<config>
<modules>
<My_Core>
<active>true</active>
<codePool>local</codePool>
</My_Core>
</modules>
</config>
app/code/local/My/Core/etc/config.xml
<config>
<modules>
<My_Core>
<version>0.1.0</version>
</My_Core>
</modules>
<global>
<models>
<my_core_store>
<rewrite>
<class>My_Core_Model_Store</class>
</rewrite>
</my_core_store>
</models>
</global>
</config>
新的Store.php文件位于app/code/local/My/Core/Model/Store.php
。而magento版本是1.8.1.0
答案 0 :(得分:6)
您的config.xml有一些错误。按照这种方式进行..
< ?xml version="1.0"?>
<config>
<modules>
<my_core>
<version>0.1.0</version>
</my_core>
</modules>
<global>
<models>
<core>
<rewrite>
<store>My_Core_Model_Store</Store>
</rewrite>
</core>
</models>
</global>
</config>
并且在模型类中,您需要扩展父类名称。例如:My_Core_Model_Filename extends Mage_Core_Model_Store
答案 1 :(得分:2)
对于大多数人来说,这将是
<modulename>
<rewrite><path_to_file>My_Extension_Path_To_Extended_File</path_to_file>
</modulename>
所以在你的情况下,它将是
<core>
<rewrite><store>My_Core_Model_Store</store></rewrite>
</core>
虽然,请注意,对于Mysql4或资源文件,它们是在modulename_mysql4
或modulename_resource
下定义的。