重写magento的model, block 和controller

Magento的二次开发 , 最重要的一点 ,就是尽量不要修改Magento的核心文件.   一旦修改了magento的核心文件,以后如果要对magento进行升级, 那将是一个恶梦, 同时,也容易造成不同模块间的冲突, 背离magento模块之间低耦合的设计思想。

Magento自身也提供了二次开发模式,即对magento的model, block, controller 进行重写

 

首先, 我们要创建一个新的module, 具体方法可以参见这里

一个新的module是一个独立的模块, 重写magento核心的模块的关键在于, 配置config.xml文件

现在我以重写购物车方法的例子进行讲解

新的模块是 /app/code/local/App/Xcheckout 即(/app/code/local/<Namespace>/<Module>/)

 

配置config.xml文件 ,重写购物车中Onepage的model, block 和controller,配置如下:

<config>
<modules>
<Mage_Xcheckout>
<version>0.0.1</version>
</Mage_Xcheckout>
</modules>
<global>
<rewrite>
<Lapss_xcheckout_onepage>
<from><![CDATA[#^/checkout/onepage/#]]></from>
<to>/xcheckout/onepage/</to>
</Lapss_xcheckout_onepage>
</rewrite>

<blocks>
<checkout>
<rewrite>
<onepage_payment_methods>Lapss_Xcheckout_Block_Onepage_Payment_Methods</onepage_payment_methods>
</rewrite>
</checkout>
</blocks>

<models>
<checkout>
<rewrite>
<type_onepage>Lapss_Xcheckout_Model_Type_Onepage</type_onepage>
</rewrite>
</checkout>
</models>
</global>

<frontend>
<routers>
<Lapss_Xcheckout>
<use>standard</use>
<args>
<module>Lapss_Xcheckout</module>
<frontName>xcheckout</frontName>
</args>
</Lapss_Xcheckout>
</routers>

<layout>
<updates>
<checkout>
<file>xcheckout.xml</file>
</checkout>
</updates>
</layout>

</frontend>
</config>

 

config.xml详细说明:

  1.指定需要重写的模块具体

<rewrite>
<Lapss_xcheckout_onepage>
<from><![CDATA[#^/checkout/onepage/#]]></from>
<to>/xcheckout/onepage/</to>
</Lapss_xcheckout_onepage>
</rewrite>

 2.针对block的重写

<blocks>
<checkout>
<rewrite>
<onepage_payment_methods>Lapss_Xcheckout_Block_Onepage_Payment_Methods</onepage_payment_methods>
</rewrite>
</checkout>
</blocks>

3.针对model的重写

<models>
<checkout>
<rewrite>
<type_onepage>Lapss_Xcheckout_Model_Type_Onepage</type_onepage>
</rewrite>
</checkout>
</models>

  4.针对contoller的重写

<rewrite>
<Lapss_xcheckout_onepage>
<from><![CDATA[#^/checkout/onepage/#]]></from>
<to>/xcheckout/onepage/</to>
</Lapss_xcheckout_onepage>
</rewrite>

<routers>
<Lapss_Xcheckout>
<use>standard</use>
<args>
<module>Lapss_Xcheckout</module>
<frontName>xcheckout</frontName>
</args>
</Lapss_Xcheckout>
</routers>

5.新模块的布局文件

<layout>
<updates>
<checkout>
<file>xcheckout.xml</file>
</checkout>
</updates>
</layout>
注意:你需要把这个模块的所有Controller都重写,这可能会带来很大的麻烦, 为了避免这个问题,config.xml可以采用以下方法:

把以下代码

   <rewrite>
<Lapss_xcheckout_onepage>
<from><![CDATA[#^/checkout/onepage/#]]></from>
<to>/xcheckout/onepage/</to>
</Lapss_xcheckout_onepage>
</rewrite>

替换成

<routers>
<onepage>
<rewrite>
<to>App_Onepage/onepage</to>
<override_actions>true</override_actions>
<actions>
<noroute><to>App_Onepage/onepage</to></noroute>
</actions>
</rewrite>
</onepage>
</routers>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值