您的位置:首页 > 其它

重写magento的model, block 和controller

2012-11-22 11:59 120 查看
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>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: