Php Joomla Development::URL重写问题
我正在完成Joomla组件的创建,我在URL重写方面遇到了问题 我创建了类“router.php”,它由我的组件的基文件调用,我使用“JRoute”在SEF中重写我的链接 问题是Joomla忽略了我的组件根目录,并加载本机组件的内容Php Joomla Development::URL重写问题,php,url,joomla,rewrite,Php,Url,Joomla,Rewrite,我正在完成Joomla组件的创建,我在URL重写方面遇到了问题 我创建了类“router.php”,它由我的组件的基文件调用,我使用“JRoute”在SEF中重写我的链接 问题是Joomla忽略了我的组件根目录,并加载本机组件的内容com\u content 以下网址: -Joomla将向我展示com\u content中ID=2的文章,而不是显示ID=2的组件记录 我觉得我已经达到了我的目标,但是有些代码我看不见。是什么让Joomla忽略我的路由器而使用com\u内容路由器 以下是我的路由器的
com\u content
以下网址:
-Joomla将向我展示com\u content
中ID=2的文章,而不是显示ID=2的组件记录
我觉得我已经达到了我的目标,但是有些代码我看不见。是什么让Joomla忽略我的路由器而使用com\u内容
路由器
以下是我的路由器的代码:
<?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
?>
法语:
我希望你能为我提供一份决策支持:
在“路由器”问题上的敏捷设备,即“网络内容”研究所,不推荐renvoi信息(l'array$vars)
e'L'数组$VARS RevayePar LE“路由器”DU“COMIX内容”ESCOMPOS de L'索引“视图”(String),de L'索引“ID”(int),ET de L'索引“CATID”(INT)SIL ILY EN UNE。我不相信“路由器”是我选择的,因为我的车在目的地页面上的价值是不可变的,因为我的名字是“内容”的,我的名字是“内容”的名字,我的名字是“问题”的延伸!!在一张桌子上,你可以在一张桌子上看到另一张桌子。。。你的鹿肉怎么样??商品标识??杜连德菜单
这是一条符合规范的路线:// Not Working
$link = JRoute::_('index.php?view='.$type.''.$catid.'&id='. $slug);
// also try this but Not Working to
$link = JRoute::_('index.php?option=com_vernitheque&view='.$type.''.$catid.'&id='. $slug);
中文:
所以我有一个步骤,我可以带来一些精度:
显然这不是一个“路由器”问题,我研究了“com_内容”路由器,包括参考信息($vars数组)
在这种情况下,“com_content”的“route”返回的$vars数组由索引“view”(字符串)、索引“id”(int)和索引“catid”(int)(如果有的话)组成。因此,我确保我的组件中的“路由器”返回相同的内容,因为如果我在登录页上执行$vars的var_转储,我返回了出现的数据,但加载的数据是“com_内容”的数据,这确实是一个扩展问题!Joomla没有加载正确的扩展名,它将无法读取正确的表。。。那么会发生什么呢??项目ID??菜单链接
如有必要,我会将JRoute的代码放入:
// Not Working
$link = JRoute::_('index.php?view='.$type.''.$catid.'&id='. $slug);
// also try this but Not Working to
$link = JRoute::_('index.php?option=com_vernitheque&view='.$type.''.$catid.'&id='. $slug);
非常感谢你的帮助!!谢谢你的帮助 您当前的SEF URL由两部分组成: vernitheque/revenders/指向组件 及 2-printemps-hausmann.html 标识物品/项目 Joomla基于菜单项别名而不是组件名称创建第一个零件! (除非您的组件没有关联的菜单项,否则您将看到/component/content) 因此,请检查您的菜单,/vernitheque应该是一级菜单项的别名,对于某些com_内容视图,Revenders可能是第二级菜单项 因此,创建一个菜单项,指向组件中的视图,并为其指定一个有意义的别名 您的SEF URL现在应该以新别名作为前缀,路由应该重新开始工作 但是,如果生成的别名仍然指向Joomla com_内容,这将非常奇怪:Joomla只允许唯一的顶级别名
我还没有深入研究您的代码,但是从您描述的行为来看,问题似乎超出了它的范围(它调用了错误的组件,没有传递错误的参数)能否显示调用JRoute的代码::()两个页面之间的Itemid没有丢失。我在出现com_内容文章的页面中找到了好的“itemid”。