显示Prestashop的Category旁边的产品数量

时间:2013-07-27 14:33:55

标签: php mysql prestashop

如何实现这个目标:

第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;' );

但我得到了这样的结果:

第1类(0)

- 类别1.1(0)

- 类别1.2(0)

-----类别1.2.1(300)

-----类别1.2.2(400)

我认为此代码需要进行一些修改。或者我错了吗?我觉得比较复杂,抱歉在这里发帖!

3 个答案:

答案 0 :(得分: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*)}

答案 1 :(得分: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

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

答案 2 :(得分:0)

在theme_dir / category.tpl

中的{$nb_products}中尝试<h1 class="page-heading">

结果如下: Here the result: