Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla Development::URL重写问题_Php_Url_Joomla_Rewrite - Fatal编程技术网

Php Joomla Development::URL重写问题

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内容路由器 以下是我的路由器的

我正在完成Joomla组件的创建,我在URL重写方面遇到了问题

我创建了类“router.php”,它由我的组件的基文件调用,我使用“JRoute”在SEF中重写我的链接

问题是Joomla忽略了我的组件根目录,并加载本机组件的内容
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”。