我们在开发过程中,经常会遇到要给magento已有的models拓展一些新的功能,而且要在保证不影响magento的升级及其他插件拓展的使用的情况下,这时候,我们可能会比较头疼,到底怎样来重写magento的model类呢。
在有些时候,我们可能会这样做,到核心代码库中复制一个类,然后到local或者community目录下再粘贴一下,然后在里面改代码,这个方法也可用,但是今天,我要讲的是通过重写magneto model类的方式来实现对magento的核心model的拓展修改。
在这里我非常不提倡直接修改magento的核心代码,所以我写下这篇文章来倡议大家通过重写模块的形式来拓展核心代码。那么,到底应该怎样做才能实现对magento models的重写呢? 首先,新建一个新的模块。请确保你使用的模块名与 magento的核心模块名区分开。这里我随意找了一个magento model来进行讲解,如下:
Mage_Wishlist_Model_Item
这个类的文件在 app/code/core/Mage/Wishlist/Model/Item.php
我们来新建一个model来重写当前的wishlist item model。比如叫做:Magease_Wishlist(当然你也可以改成你自己想要的名字)。 将app/code/core/Mage/Wishlist/Model/Item.php 拷贝到app/code/community/Magease/Wishlist/Model/目录下。打开文件将class Mage_Wishlist_Model_Item 重命名为class Magease_Wishlist_Model_Item
在loadByProductWishlist 方法中添加一下代码
var_dump(get_class($this));
exit();
新建模块的配置文件。app/etc/modules/Magease_Wishlist.xml
<? xml version="1.0" ?>
<config>
<modules>
<magease_wishlist>
<active>true</active>
<codepool>local</codepool>
</magease_wishlist>
</modules>
</config>
在当前的模块的配置文件app/code/local/magease/Wishlist/etc/Config.xml 中加入以下代码。
<? xml version = "1.0" ?>
<config>
<modules>
<magease_wishlist>
<version>0.1</version>
</magease_wishlist>
</modules>
<global>
<models>
<wishlist>
<rewrite>
<item>Magease_Wishlist_Model_Item</item>
</rewrite>
</wishlist>
</models>
</global>
</config>
好了,到此为止,我们对Mage_Wishlist model的重写已经完成了,现在可以在里面随意的添加你想要添加的功能了。