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

前端之家收集整理的这篇文章主要介绍了“约定优于配置”与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>

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


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

猜你在找的XML相关文章