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

Posted

技术标签:

【中文标题】需要Joomla 2.5 自定义组件Router.php 说明【英文标题】:Need Joomla 2.5 Custom Component Router.php Explanation 【发布时间】:2014-09-16 09:45:18 【问题描述】:

我完全不知道如何将 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

我要做的是获取ma​​ke_idmodel_idyear_id,在数据库中找到对应的值并用于网址如下:products/dash-kits/YEAR-MAKE-MODEL.html

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

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

大佬们有什么想法吗?

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

任何帮助将不胜感激。我一直在寻找解决方案、半解决方案等,并将继续这样做。

【问题讨论】:

【参考方案1】:

其实很简单。您需要在 router.php 中使用 2 个函数:

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 中的部分组成,例如类别名称和产品名称。在该函数中,您需要获取类别和产品的 ID,并返回类似于 array('category_id'=>$category_id, 'product_id'=>$product_id);

的数组

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

【讨论】:

如果我错了,请纠正我,但这个解决方案不起作用。这有点复杂。我们的整个产品系统是在典型的 Joomla 结构之外定制构建的。我很难从技术上解释,但我需要将:make_id、model_id 和 year_id 转换为它们对应的 SEO 友好关键字:2002 daewoo leganza。这有意义吗?

以上是关于需要Joomla 2.5 自定义组件Router.php 说明的主要内容,如果未能解决你的问题,请参考以下文章

在自定义组件中更改 joomla 2.5 默认编辑器

Joomla 2.5 组件更新

Joomla 2.5 高级参数

如何使用自定义插件将值插入 Joomla 2.5 DB

上下文模块 - Joomla 2.5

Joomla 2.5 组件升级同时保持文件不变