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


Need Joomla 2.5 Custom Component Router.php Explanation

我完全不知道如何为自定义组件使用Joomla的路由功能。下面是一个通过表单提交发送到自定义组件的示例链接:

http://superiordash.com/products/dash-kits/index.html?make_id=8& model_id = 6, year_id = 48,选项= com_mmg&视图= products&页面= list& sel_make_id = 1, sel_model_id = 1, sel_year_id = 1, Itemid = 580

我想做的是抓住make_idmodel_idyear_id,在数据库中找到相应的值,并将它们用于url: products/dash-kits/YEAR-MAKE-MODEL.html

对于上面的例子链接:

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

有什么伟大的想法吗?

另外,从我从文档中理解的-我是否要找到一种方法来爆炸查询的其余部分,或者它将附加在url的末尾?如果是这样的话,有没有一种方法可以将查询的每一部分都分解,除了年份、制造和型号,而不管它是什么?

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

这其实很简单。你需要在router.php中使用两个函数:

ComponentNameBuildRoute

ComponentNameParseRoute

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

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

你可以在router.php中找到banner组件(这是最简单的组件),并将其用作启动点。