通过controller进行url重写

改功能是将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,然后点击后,就通过上面的方式执行了!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值