Joomla / 将类别描述添加到文章类别模块

Posted

技术标签:

【中文标题】Joomla / 将类别描述添加到文章类别模块【英文标题】:Joomla / Add category description to Article Category modules 【发布时间】:2012-02-24 01:47:46 【问题描述】:

如何在 Joomla 的文章分类模块中添加分类描述? 分组项目后唯一的php调用是<?php echo $group_name; ?>

提前致谢!

【问题讨论】:

【参考方案1】:

所以在:/modules/mod_articles_category/default.php

确保您先创建一个覆盖,然后添加:

$db     = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('id', 'title', 'description'));
$query->from($db->quoteName('#__categories'));
$query->where($db->quoteName('extension') . ' = ' . $db->quote('com_content'));
$db->setQuery($query);

$categories = $db->loadObjectList('id');

紧随其后:定义('_JEXEC')或死亡;

然后在每个项目中你可以像这样加载它:

echo $categories[$item->catid]->description;

如果在分组而不是项目上使用,它有点不同,这里是整个顶部 sn-p 替换:

<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_category
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$db     = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('id', 'title', 'description'));
$query->from($db->quoteName('#__categories'));
$query->where($db->quoteName('extension') . ' = ' . $db->quote('com_content'));
$db->setQuery($query);

$categories = $db->loadObjectList('title');

?>
<ul class="category-module<?php echo $moduleclass_sfx; ?> mod-list">
    <?php if ($grouped) : ?>
        <?php foreach ($list as $group_name => $group) : ?>     
            <li>
            <div class="mod-articles-category-group"><?php echo JText::_($group_name); ?></div>
            <p><?php echo count($group) > 0 ? $categories[$group_name]->description : ''; ?></p>

因为 $group 只包含列表,所以我们这次取而代之的是名称并从名称中加载类别。

【讨论】:

【参考方案2】:

我知道这是一篇旧帖子,但对于 Joomla! 3.5 及更高版本您可以使用...

$category   = JCategories::getInstance('Content')->get($item->catid);

比在模板覆盖文件中调用数据库容易得多。

【讨论】:

【参考方案3】:

放入你的 default.php 覆盖或自定义模板:

<?php // tested in Joomla 3.1.5 only
    $input = JFactory::getApplication()->input;
    $idbase = $params->get('catid');
    $catID =  $idbase[0];
    //echo $catID;
    $db = JFactory::getDBO();
    $db->setQuery("SELECT description FROM #__categories WHERE id = ".$catID." LIMIT 1;");
    $catDesc = $db->loadResult();
?>
<div class="catdesc">
    <?php echo $catDesc; ?>
</div>

修改自: http://www.noxidsoft.com/development/get-the-category-blog-description-in-joomla-3-1-5/

【讨论】:

最好用$db-&gt;q("$catID")引用值,$params-&gt;getInt('catid')避免注入。【参考方案4】:

将此添加到您的 default.php 覆盖。

<?php 
    $db = &JFactory::getDBO(); 
    $id = JRequest::getString('id'); 
    $db->setQuery('SELECT #__categories.description FROM #__content, #__categories WHERE #__content.catid = #__categories.id AND #__content.id = '.$id); 
    $category = $db->loadResult();
    echo $category; 
?>

【讨论】:

以上是关于Joomla / 将类别描述添加到文章类别模块的主要内容,如果未能解决你的问题,请参考以下文章

按类别内的标签过滤文章 - Joomla 和 K2

如何从 mysql 将子类别加载到 joomla

显示修改日期类别列表 joomla 1.5

限制用户只能在 joomla 后端创建文章(而不是类别)

Joomla 2.5 仅在 K2 类别上显示模块而不在 K2 项目上

上下文模块 - Joomla 2.5