本文共 1244 字,大约阅读时间需要 4 分钟。
改功能是将http://www.sample.com/tag/product/list/tagId/2,重写成http://www.sample.com/tag/2!
1
通过controller,具体详细原理我也说不清楚,大致是通过抓取一个事件来进行的!!
这个事件就是controller_front_init_routers,然后把填写
<events>
<controller_front_init_routers> <observers> <tag> <type>singleton</type> <class>Mage_Tag_Controller_Router</class> <method>initControllerRouters</method> </tag> </observers> </controller_front_init_routers> </events>
2
写Controller,譬如:
class Mage_Tag_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract { public function initControllerRouters($observer) { $front = $observer->getEvent()->getFront(); $tag = new Mage_Tag_Controller_Router(); $front->addRouter('tag', $tag); } public function match(Zend_Controller_Request_Http $request) { $pageId = $request->getPathInfo(); Mage::register('paramsttt', $pageId); $request->setModuleName('tag') ->setControllerName('product') ->setActionName('list'); return true; } }如果执行url:/tag/tagid,就会执行这个controller,然后将paramsttt赋值于/tag/tagid,
然后呢,在执行/tag/product/list这个url(相当于),然后再这个controllers接受这个参数
$paramas = Mage::registry('paramsttt');
然后通过字符串函数
$ss = explode('/', $paramas);
$tagName =$ss['2'];就可以得到tagid这个字符串,然后执行到的controller和得到的参数都有了,从而实现了重写!!!
3.在指向原来url需要改变成上面的修改完毕的url,也就是重写后的url,然后点击后,就通过上面的方式执行了!!
转载地址:http://fncli.baihongyu.com/