需要Joomla 2.5自定义组件Router.php说明

时间:2014-07-24 17:40:40

标签: php joomla routes components joomla2.5

我完全迷失了如何将Joomla的路由功能用于自定义组件。 以下是通过表单提交发送到自定义组件的示例链接:

http://superiordash.com/products/dash-kits/index.html?make_id=8&model_id=6&year_id=48&option=com_mmg&view=products&page=list&sel_make_id=-1&sel_model_id=-1&sel_year_id=-1&Itemid=580

我想要做的是抓住 make_id model_id year_id ,在数据库中找到相应的值并将其用于这样的网址:产品/仪表板/ 年份模型 .html

所以对于上面的示例链接:

http://superiordash.com/products/dash-kits/2002-acura-rsx.html

那里有伟人的想法吗?

另外,根据我从文档中理解的内容 - 我是否必须找到一种方法来分解查询的其余部分,或者它将附加在url的末尾?如果是这样的话 - 除了年份,品牌和型号之外,有没有办法可以爆炸查询的每个部分,无论它是什么?

任何帮助都会非常感激。我一直在寻找解决方案,半解决方案等,并将继续这样做。

1 个答案:

答案 0 :(得分:0)

实际上很容易。您需要在router.php中使用2个函数:

ComponentNameBuildRoute

ComponentNameParseRoute

构建路径将返回一个数组,其中包含要在URL中显示的元素。例如,对于http://www.test.com/products/category-name/product-name的链接,构建路由函数将返回数组('category-name','product-name'); 。数组自动传递给Joomla函数以生成SEF URL。

解析路由功能会将SEF URL转换为GET URL。该函数将接收$ segments作为参数,并且该段将包含URL中的部分,例如category-name和product-name。在该函数中,您需要获取类别和产品的ID,并返回类似于数组的数组('category_id'=> $ category_id,'product_id'=> $ product_id);

您可以检查router.php中的banners组件(这是最简单的组件)并将其用作启动点。