`
cgzhang
  • 浏览: 71997 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Magento二次开发的利器:Rewrite

阅读更多
Magento是一个十分优秀的电子商务系统,但是有时候我们需要增加一些新的功能或者修改原有的功能,一般情况下通过自己开发的扩展模块(module)可以满足要求。如果需要修改系统的一些默认行为(如结账,注册等),不提倡直接修改Magento本身模块里的代码(修改后无法升级,因为升级后所做的修改会被升级后的文件覆盖),这时候Magento提供的rewrite机制可以满足我们的要求。

Magento中可以rewrite的对象有:Block, Controller(frontend 和admin)以及Model。

最常用的是rewrite controller,参见:Magento重载Controller的方法
通过rewrite控制器,可以修改系统本身模块的一些动作而又不改变原有的url。

其次是rewrite block,方法参见:
Magento中用子类替换Block

Rewrite block可以给系统原有的block类加入新的字段,方法,设置新的template等。

最后可以rewrite model,方法如下:
1. 在配置文件config.xml中加入:
<models>
  <enterprise_catalogpermissions> <!--被rewrite的model标识符-->
        <rewrite>
             <!--被rewrite类名-->
             <!--替换的全类名-->
             <observer>Glamour_Glscustomer_Model_Observer</observer>
       </rewrite>
            </enterprise_catalogpermissions>
        <customer>
            <rewrite>
            	<session>Glamour_Glscustomer_Model_Customer_Session</session>
             </rewrite>
        </customer>
...
</models>


Rewrite model后,通过
Mage::getModel('enterprise_catalogpermissions/observer')


Mage::getModel('customer/session')

实际上获得的类是:
Glamour_Glscustomer_Model_Observer


Glamour_Glscustomer_Model_Customer_Session


可以给原有的model加入新的字段,修改或加入新的方法。
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics