我希望使用CodeIgniter为joomla创建一个前端。我更喜欢制作我自己的前端,读取joomla数据库,我有自己的“框架”来实现这一点,这是因为我觉得joomla前端对于高流量网站来说太重了,因为它需要适应这样很多用户需求,最后你真的只会使用joomla提供的一小部分,但是很多不需要的核心模块会加载,当你的网站每天访问量达到300k时,每一点资源都会计算在内。我喜欢joomla,因为它的后端和数据库结构。
无论如何,我正在寻找使用CodeIgniter标准化joomla前端的框架,而不是我自己的凌乱的PHP代码,我的主要问题是ci路由器。在joomla中我设置了这样的sef url:
websitex.com/
websitex.com/category.html
websitex.com/category/subcat/123-alias.html
我正在寻找允许我处理这些网址的路由器覆盖。基本上,如果任何一个参数都有一个数字,那么肯定是一篇文章。如果它没有,并且它不是index.php那么它肯定是一个类别或子类别(如果它存在)。
如果我写这个:
websitex.com/123 [OR]
websitex.com/category/123-alias.html
它会显示id为123的文章。至少它是如何在joomla中运行的,以及我在这里要实现的目标。
如果有人能指出我正确的方向那将是伟大的。提前谢谢。
增加: 好的@ImranQamer评论让我思考。如果我尝试使用传统的CI路由器怎么办?所以我尝试了,并想出了这个:
$route['default_controller'] = "controller/index";
$route['index'] = "controller/index";
$route[':num'] = "controller/article";
$route['(:any)/:num'] = "controller/article";
$route['(:any)'] = "controller/section";
我认为它可能会奏效。我做了一些测试,到目前为止一直很好。
第一行和第二行,如果没有指定或者index.suffix(index.html)是URI,那么它将转到我的控制器索引方法。 第三行,如果URI是一个数字(例如:/123.html),那么它将路由到controller / article。 第四行需要更多测试,但显然它会抓取任何以数字(或数字+后缀)结尾的URI并将其路由到控制器/文章。还需要另一条规则让文章的标题别名放在URI中(例如:/category/123-hello.html) 最后一行,将URI视为joomla网站的类别/部分之一。但是在这个控制器中,我将需要检查提交的URI是否与现有部分相对应,在这种情况下它会被显示,否则会被重定向到404。
我会暂时测试一下,但到目前为止看起来还不错。