【问题标题】:Get current article category ID (catid) in Joomla 3.2在 Joomla 3.2 中获取当前文章类别 ID (catid)
【发布时间】:2014-04-05 06:42:38
【问题描述】:

我需要在我使用的旧版 joomla 中获取当前文章类别 ID:

<?php $catid = JRequest::getInt('catid'); echo $catid; ?>

但在 Joomla 3.2 中我得到 0。

【问题讨论】:

  • 您需要在什么上下文中获取它?例如在布局中?还是在模型中?还是插件或助手?

标签: joomla joomla3.2 joomla-framework


【解决方案1】:

您可以利用文章模型实例被缓存以及当前文章的查询结果被缓存的事实来消除额外的数据库查询。所以,使用内容模型类来获得你想要的。

    $app = Jfactory::getApplication();
    $input=$app->input;
    if ($input->getCmd('option')=='com_content' 
    && $input->getCmd('view')=='article' ){
        $cmodel = JModelLegacy::getInstance('Article', 'ContentModel');
        $catid = $cmodel->getItem($app->input->get('id'))->catid;
    }

注意,如果您在呈现应用程序之前从系统插件调用它,您还必须使用 require_once 来包含内容模型。上面的代码在大多数情况下都可以正常工作,例如模板或内容插件。

【讨论】:

    【解决方案2】:

    试试这个

    <?php echo $this->item->catid;?>
    

    这个工作在分类文件夹 blog_item.php 和文章文件夹 blog.php 中。

    【讨论】:

      【解决方案3】:

      我知道这是一篇旧帖子,但它帮助我弄清楚了我需要什么。

      获取 catid、视图和布局:

      $a = JFactory::getApplication();
       $input=$a->input;
      
       $catId = $input->getCmd('id');
       $view  = $input->getCmd('view');
       $layout = $input->getCmd('layout');
      

      【讨论】:

        【解决方案4】:

        这将取决于您的上下文。在 joomla 3 中,当您显示文章时,类别 ID 不在 www-query 中。因此,您需要从文章项中获取它。要调查 catid 在您的某些变量中是否可用,您可以尝试这样做:

        <?php print_r($this); ?>
        

        <?php print_r(get_defined_vars()); ?>
        

        要直接在模板中获取 catid,如果上面的输出中没有它,你可以这样做:

        $input=Jfactory::getApplication()->input;
        if($input->getCmd('option')=='com_content' 
        && $input->getCmd('view')=='article' ){
          $db=JFactory::getDbo(); 
          $db->setQuery('select catid from #__content where id='.$input->getInt('id')); 
          $catid=$db->loadResult(); 
        }
        

        (这将产生一些额外的数据库流量) 关于乔纳斯

        【讨论】:

          【解决方案5】:

          你必须仔细查看网址。

          代替:

          <?php
          $catid = JRequest::getInt('catid');
          echo $catid;
          ?>
          

          可能是:

          <?php
          $catid = JRequest::getInt('id');
          echo $catid;
          ?>
          

          以下是我拥有的示例 URL:

          index.php?option=com_content&view=category&layout=blog&id=8&Itemid=103
          

          您可以在id=8中找到类别ID

          【讨论】:

          • 我想我可能会关注这个答案,但它似乎缺少一些细节。我认为检查 URL 的建议可能是一个不错的建议……也许您打算包含一些降价,但没有成功?尝试编辑您的答案,看看是否可以增加一些清晰度?
          • @MetagrapherMeta 我已经修复了格式问题。
          • @Thierry 如果您是 Joomla 用户,请通过 Joomla Stack Exchange 加入我们。
          猜你喜欢
          • 2013-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-13
          • 2012-10-14
          • 1970-01-01
          • 1970-01-01
          • 2017-09-24
          相关资源
          最近更新 更多