Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/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
Joomla:类别不计算子类别中的文章_Joomla - Fatal编程技术网

Joomla:类别不计算子类别中的文章

Joomla:类别不计算子类别中的文章,joomla,Joomla,我有菜单项“列出所有类别”。问题是,类别不计算子类别中的文章并显示为0,应该计算所有子类别中的所有文章。 我无法添加图片,因此我将描述: 类别(0) 子类别1(1) 子类别2(1) 我想,该类别将统计子类别中的文章(在示例中应为2) 有人知道怎么修吗 非常感谢您的帮助 先谢谢你。 编辑: 我使用的是2.5 Joomla。不,我不写组件/插件/模块。 我正在使用菜单项:列出所有类别(菜单->主菜单->添加新菜单项->列出所有类别)。 最后,我找到了描述这个函数的地方。 此处,numitems是类别

我有菜单项“列出所有类别”。问题是,类别不计算子类别中的文章并显示为0,应该计算所有子类别中的所有文章。 我无法添加图片,因此我将描述: 类别(0) 子类别1(1) 子类别2(1)

我想,该类别将统计子类别中的文章(在示例中应为2)

有人知道怎么修吗

非常感谢您的帮助

先谢谢你。 编辑:

我使用的是2.5 Joomla。不,我不写组件/插件/模块。 我正在使用菜单项:列出所有类别(菜单->主菜单->添加新菜单项->列出所有类别)。 最后,我找到了描述这个函数的地方。 此处,numitems是类别中文章的数字:

 $subQuery = ' (SELECT cat.id as id FROM #__categories AS cat JOIN #__categories AS parent ' .
        'ON cat.lft BETWEEN parent.lft AND parent.rgt WHERE parent.extension = ' . $db->quote($extension) .
        ' AND parent.published != 1 GROUP BY cat.id) ';
    $query->leftJoin($subQuery . 'AS badcats ON badcats.id = c.id');
    $query->where('badcats.id is null');

    // i for item
    if (isset($this->_options['countItems']) && $this->_options['countItems'] == 1)
    {
        if ($this->_options['published'] == 1)
        {
            $query->leftJoin(
                $db->quoteName($this->_table) . ' AS i ON i.' . $db->quoteName($this->_field) . ' = c.id AND i.' . $this->_statefield . ' = 1'
            );
        }
        else
        {
            $query->leftJoin($db->quoteName($this->_table) . ' AS i ON i.' . $db->quoteName($this->_field) . ' = c.id');
        }

        $query->select('COUNT(i.' . $db->quoteName($this->_key) . ') AS numitems');
    }
根据我的理解,我需要创建类似于$subQuery的内容,但这次应该从子类别中计算文章。但我不知道该怎么做/
有什么想法吗?

乔姆拉s List All Categories将仅显示该特定类别中的文章计数。子类别将不在父类别中计数。这是因为父类别可以有自己的文章

要显示一个类别及其子类别中所有文章的总数,需要修改Joomla core
com\u内容组件(对核心文件的任何修改都应视为错误),或者创建一个修改后的*复制com\u内容组件*(这将更有效,但可能比您想要的更费力)或为
类别
视图创建视图覆盖

使用覆盖将使页面在计算方面显示得更重

如果使用覆盖,您需要做的就是:

  • default\u items.php
    /components/com\u content/views/categories/tmpl/default\u items.php
    复制到
    /templates/your template/html/com\u content/categories/default\u items.php
  • 修改它以计算子项
  • 修改它以显示总计数
  • 2-计算分项 在
    定义的(''u JEXEC')或die;
    行后插入此代码:

    // Calculate number of items including sub-categories using a recursive anonymous function
    $countSubItems = function( $item ) use ( &$countSubItems ) {
        $children = $item->getChildren();
        if( count($children) == 0 ) {
            return $item->numitems;
        } else {
            $subItems = 0;
            foreach ($children as $child) {
                $subItems += $countSubItems($child);
            }
            return $subItems = $item->numitems + $subItems;
        }
    };
    
    调用count函数 在第二条
    if
    语句后插入调用count函数的行:

    $allItemsInclSubCats = $countSubItems($item);
    
    显示总计,包括子类别 将echo的
    $item->numitems;
    行更改为如下内容:

    <dd><?php echo $item->numitems; ?> ( <?php echo $allItemsInclSubCats; ?> including sub-categories )</dd>
    
    (包括子类别)
    
    如果您正在为Joomla编写组件/模块/插件!您需要发布相关代码,以便我们提供帮助。您还需要告诉我们Joomla的哪个版本。您好,我更新了问题。希望有帮助。您使用的Joomla!2.5的哪个版本是2.5.1、2.5.2、2.5.3、2.5.4还是2.5.6?2.5.0存在大量安全漏洞,您确实应该升级。您好,感谢您的全面解释。但是,它不起作用。您好,感谢您的全面解释。但是,它不起作用。请检查它的外观:我添加了2个计数子项,并按照您的建议在components/com_content/views/categories/tmpl/default_items.php中显示包含子类别的总数。什么是$allItemsInclSubCats?whe是否描述了此变量?我尝试写入$countSubItems(给定错误)和$subItems(保持不变)取而代之的是$countSubItems。你有什么想法吗?提前谢谢你,你很好。你修改了你的核心文件,这不是我的建议。请看我编辑的答案,我漏了一行。太好了,工作得很有魅力!但我仍然想要一件事。查看当前情况的图片:我想要,对于父类别,只显示包括子类别和子类别只显示他们自己的文章。所以我希望它是:奥兰迪亚(2)-爱丁堡(1)-阿姆斯特丹(1)等等。你认为有什么可能?或者另一种可能隐藏父类别的文章数字,它可以是:奥兰迪亚(2)-爱丁堡(1)-阿姆斯特丹(1)但第一个变体更好。非常感谢。当我发布时,我发现它可能不清楚。Olandija是父类别,爱丁堡和阿姆斯特丹是子类别。谢谢。