“约定优于配置”与Magento改造尝试二之布局xml文件加载

上一章讲到语言包加载的改造,这一章准备对布局xml文件的配置下手。把布局xml文件加载的改造放第二章,是因为本章开始会引入一个我自己定义的概念,相比第一章对底层的改动更大。

这个新概念我称之为模块的别名,设置方式如下(修改模块的config.xml):

    <modules>
        <Mage_Wishlist>
            <version>1.6.0.0</version>
            <alias>wishlist</alias>
        </Mage_Wishlist>
    </modules>

我在这个系列概论(“约定优于配置”与Magento)的时候有提到,Magento的潜规则之一是,blocks的别名,helper的别名,布局xml文件的文件名,用的都是同一个。那么这里我就来给整个模块定义一个别名alias,然后给blocks,helper,布局xml文件的文件名等等共用,他们各自不再需要单独命名一次,比如

        <layout>
            <updates>
                <wishlist module="Mage_Wishlist">
                    <file>wishlist.xml</file>
                </wishlist>
            </updates>
        </layout>

通过对底层的改造,不再通过上面这整段xml来定义模块对应的布局文件,而是直接用模块的别名wishlist拼接后缀字符串“.xml”来定义模块对应的布局文件。

需要修改的文件是Mage_Core_Model_Config和Mage_Core_Model_Layout_Update,详见

https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Model/Config.php

https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Model/Layout/Update.php


主要修改的方法是:public function getFileLayoutUpdatesXml


跟上一章对语言包的处理方式不同的是,这里对布局文件加载的修改并没有推翻原有的逻辑,而是添加了一种默认逻辑。换句话说,在经过这样的修改之后,下面这种配置方式依然是有效的,当模块不对布局文件人为指定时,系统才会去用模块的别名拼接“.xml”来寻找该文件

        <layout>
            <updates>
                <wishlist module="Mage_Wishlist">
                    <file>wishlist.xml</file>
                </wishlist>
            </updates>
        </layout>

这种方式更符合“约定优于配置”的理念,不配置时按约定,同时保留配置的权利,语言包的处理方式应该算是“约定取代配置”。(我的个人理解是这样)


经过这一章的修改之后,理论类似上面的这种<layout>块都可以删掉了,不过我倒是真的发现了一个插件没有遵循我之前所说的潜规则(算说大话了),这个插件就是普及度超级高的AW_Blog,它的布局文件名是aw_blog.xml而不是blog.xml鄙视

        <layout>
            <updates>
                <blog module="AW_Blog">
                    <file>aw_blog.xml</file>
                </blog>
            </updates>
        </layout>

碰到这样的第三方插件,还想像上面这么玩的话,需要改一下布局文件的文件名了 睡觉


好了,请期待下一章!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值