joomla自定义router的规则

编写自己的router插件

xml

<extension type="plugin" gourp="system" method="upgrade">
......
</extension>

xxxrouter.php

1、extends CMSPlugin
2、添加自己的rule规则:parseRule

public function onAfterInitialise(){
    $router = CMSApplication::getInstance('site')->getRouter('site');
    $router->attachParseRule(array(this,'parseRule'), Router::PROCESS_BEFORE);
}

3、parseRule实现

public function parseRule(&$router, &$uri){
    $route = $uri->getPath();
    if (empty($route)){
      return; 
    }
    $segements = explode('/',$route);
     .........
    if (url匹配自定义的url规则){
       //进入自己的url处理逻辑
       ......
       //删除joomla系统自己的parseRawRoute规则,保证最后url的处理是自己想要的结果
       $router->detachRule('parse',array($router,'parseRawRoute'),Router::PROCESS_DURING);
       ......
       //将url解析后定位到指定的组件和视图进行处理,添加各种约定的参数等
       $params = array();
       $params['view'] = xxx;
       $params['option'] = xxx;
        ......
       $uri->setQuery(array_merge($uri->getQuery(true),$params));
       .......
    }
}

最后的效果就是可以绕过joomla自己的菜单url规则,实现它自己菜单url规则无法做到的事情

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容