我正在为 Joomla 创建一个组件,但我遇到了 URL 重写的问题。
我创建了由组件的基本文件调用的类“router.php”,并使用“JRoute”在 SEF 中重写我的链接。
问题是 Joomla 忽略了我的组件 rooter 并加载了本机组件的内容com_content
。
对于以下网址 -
http://lafoliedesvernis.com/vernitheque/revendeurs/2-printemps-haussmann.html - Joomla 将向我显示com_content
谁拥有的文章,ID = 2
而不是显示我的组件的记录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
?>