上一章引入了一个自定义的概念叫模块的别名(alias),这章沿用这个概念来处理routerName的加载。
<modules>
<Mage_Wishlist>
<version>1.6.0.0</version>
<alias>wishlist</alias>
</Mage_Wishlist>
</modules>
常见的路由(router)定义如下
<routers>
<wishlist>
<use>standard</use>
<args>
<module>Mage_Wishlist</module>
<frontName>wishlist</frontName>
</args>
</wishlist>
</routers>
很自然的发现<frontName>的值wishlist与该模块其它别名都是一致的(不一致的情况下面会讲到),那么这次改造的目的就是,直接用通用的别名来取代这一整段路由配置。
因为路由这个东西很明显存在需要自定义的需求(即前端网页url自定义的需求),所以类似于对布局xml文件的处理,这里的改造方式保留了上面这种人为指定路由的配置方式,在没有人为指定路由时,采用模块的别名作为路由名。(其实“布局xml文件”是否保留自定义配置我觉得可以商榷,但路由的自定义是必须保留的)
需要修改的文件是Mage_Core_Controller_Varien_Router_Standard,详见
https://github.com/walexer/Yli_Coc/blob/master/app/code/local/Mage/Core/Controller/Varien/Router/Standard.php
主要修改的方法是:public function collectRoutes($configArea, $useRouterName)
如上文所言,经过这次修改之后,用户依然可以人为指定路由名,不需要指定的(跟别名一致的),可以删除类似如下的xml片段
<routers>
<wishlist>
<use>standard</use>
<args>
<module>Mage_Wishlist</module>
<frontName>wishlist</frontName>
</args>
</wishlist>
</routers>
从实际工作经验来说,有人为指定跟别名不一致的路由名的模块是个别少数,大部分模块都可以省下这一段xml配置了。
好了,请期待下一章!!!