【发布时间】:2013-01-16 04:20:58
【问题描述】:
我正在完成 Joomla 组件的创建,但我遇到了 URL 重写问题。
我创建了类“router.php”,由我的组件的基本文件调用,我使用“JRoute”在 SEF 中重写我的链接。
问题是Joomla忽略了我的组件rooter并加载了本机组件com_content的内容。
对于以下网址 -
http://lafoliedesvernis.com/vernitheque/revendeurs/2-printemps-haussmann.html - Joomla 将向我显示具有 ID = 2 的 com_content 的文章,而不是显示具有 ID = 2 的组件的记录
我觉得我已经达到了我的目标,但是对于一些我看不到的地方的代码。是什么让 Joomla 忽略我的路由器并使用 com_content 路由器?
这是我的路由器的代码:
<?php
defined ('_JEXEC') or die ('Restricted access');
VernithequeBuildRoute function (& $ query)
{
$ Segments = array ();
if (isset ($ query ['view'])) {
$ Segments [0] = $ query ['view'];
unset ($ query ['view']);
};
if (isset ($ query ['id'])) {
$ Segments [1] = $ query ['id'];
unset ($ query ['id']);
};
return $ segments;
} / / End function VernithequeBuildRoute
VernithequeParseRoute function ($ segments)
{
$ Vars = array ();
if (count ($ segments)> 0) {
$ Vars ['view'] = $ segments [0];
switch ($ vars ['view']) {
case 'all':
$ Catid = explode (':', $ segments [1]);
$ Vars ['catid'] = (int) $ catid [0];
break;
case 'category':
$ Vars ['id'] = (int) $ segments [1];
break;
case 'brand':
$ Id = explode (':', $ segments [1]);
$ Vars ['id'] = (int) $ id [0];
break;
case 'resellers':
$ Id = explode (':', $ segments [1]);
$ Vars ['id'] = (int) $ id [0];
break;
case 'varnish':
$ Id = explode (':', $ segments [1]);
$ Vars ['id'] = (int) $ id [0];
break;
case 'configure':
$ Id = explode (':', $ segments [1]);
$ Vars ['id'] = (int) $ id [0];
break;
box 'panel':
$ Id = explode (':', $ segments [1]);
$ Vars ['id'] = (int) $ id [0];
break;
};
Else {}
$ Vars ['view'] = $ segments [0];
} / / End count (segments) statement
return $ vars;
} / / End VernithequeParseRoute
?>
【问题讨论】:
-
能否显示调用JRoute::_()的代码