我需要获取当前的文章类别ID,在我使用的旧Joomla版本中:
<?php $catid = JRequest::getInt('catid'); echo $catid; ?>
但是在 Joomla 3.2 中,我得到 0。
您可以通过利用文章模型实例和当前文章的查询结果被缓存的事实来消除额外的数据库查询。因此,使用内容模型类来获取您所追求的内容。
$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 来包含内容模型。上面的代码在大多数情况下都可以正常工作,例如模板或内容插件。
试试这个
<?php echo $this->item->catid;?>
这在blog_item.php类别文件夹和文章文件夹的博客.php中工作。
我知道这是一个旧帖子,但它帮助我弄清楚我需要什么。
要获取类别、视图和布局,请执行以下操作:
$a = JFactory::getApplication();
$input=$a->input;
$catId = $input->getCmd('id');
$view = $input->getCmd('view');
$layout = $input->getCmd('layout');
这将取决于您的上下文。在 joomla 3 中,当您显示文章时,类别 ID 不在 www 查询中。所以你需要从文章项中获取它。要调查 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();
}
(这将产生一些额外的数据库流量)问候乔纳斯
你必须仔细查看网址。
而不是:
<?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