很多时候当我想要实现新功能,但又不想修改核心类。对于控制器来说,这很简单。从核心文件中拷贝控制器,放到local中同样的位置,然后修改就可以了。但这不适用于模型,那么如何在不修改核心文件的前提下重写Magento模型呢?

幸运的是,这并不难。让我们一起做个插件吧。我们以app/code/core/Mage/Wishlist/Model/Item.php中的Mage_Wishlist_Model_Item为例。我们想要添加新的功能,所以创建新的模块。app/code/local/Alwayly/Wishlist/Model/Item.php。现在将Mage_Wishlist_Model_Item重命名为Alwayly_Wishlist_Model_Item并在loadByProductWishlist方法加入下面一行代码:

var_dump(get_class($this)); exit();

现在,在app/etc/modules/中创建Alwayly_Wishlist.xml,代码如下:

< ?xml version="1.0"?>  
<config>  
    <modules>  
        <alwayly_wishlist>  
            <active>true</active>  
            <codepool>local</codepool>  
        </alwayly_wishlist>  
    </modules>  
</config> 

接着用下面的代码创建app/code/local/Alwayly/Wishlist/etc/Config.xml

< ?xml version="1.0"?>
<config>
    <modules>
        <alwayly_wishlist>
            <version>0.1</version>
        </alwayly_wishlist>
    </modules>
    <global>
       <models>
          <wishlist>
              <rewrite>
                  <item>Alwayly_Wishlist_Model_Item</item>
              </rewrite>
          </wishlist>
       </models>
    </global>
</config>

360magento提供专业的基于magento系统的电商网站开发服务,如有需求或相关咨询,请与我们联系