1

如何实现这一点:

第一类 (899)

-- 1.1 类 (189)

-- 1.2 类 (700)

----- 类别 1.2.1 (300)

----- 类别 1.2.2 (400)

我已经取得了一些进展。但它只计算“子类别”中的产品数量

这是代码:

$ProductsCount = 0;
    $ProductsCount = (int)Db::getInstance()->getValue('SELECT COUNT(cp.`id_product`) AS total
    FROM `'._DB_PREFIX_.'product` p
    '.Shop::addSqlAssociation('product', 'p').'
    LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON p.`id_product` = cp.`id_product`
    WHERE cp.`id_category` = '.$id_category.
    ' AND product_shop.`visibility` IN ("both", "catalog")
    AND product_shop.`active` = 1;' );

但我得到这样的结果:

第一类 (0)

-- 1.1 类 (0)

-- 1.2 类 (0)

----- 类别 1.2.1 (300)

----- 类别 1.2.2 (400)

我认为这段代码需要一些修改。还是我错了?我适合更复杂,然后很抱歉在这里发布!

4

3 回答 3

4

要计算类别中的产品:

将此添加到 /classes/Category.php

public static function countProductInCat($id_category){
    $category = new Category($id_category, 1);
    $productCount = $category->getProducts(1, 1, 10000, null, null, true);
    return $productCount;
}

并使用它在 .tpl 中显示

{Category::countProductInCat(*idCat*)}
于 2014-03-07T12:46:24.073 回答
0

您之前应该阅读过源代码:)

Category::getProducts()方法允许您获取一个类别中的产品总数。无需编写自己的 SQL 查询。

像这样适合您的代码的东西应该可以工作:

$category = new Category($id_category, $id_lang);
$productCount = $category->getProducts($id_lang, 1, 10000, null, null, true); // the last parameter is $get_total

现在我不记得该方法是否返回包括子类别在内的产品总数,但看看您应该能够编写适合自己的方法。

于 2013-08-02T09:08:56.070 回答
0

{$nb_products}<h1 class="page-heading">theme_dir/category.tpl 中尝试

结果如下: 结果如下:

于 2017-11-20T15:57:21.407 回答