编写自己的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规则无法做到的事情