如何实现这个目标:
第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)
我认为此代码需要进行一些修改。或者我错了吗?我觉得比较复杂,抱歉在这里发帖!
答案 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">
结果如下: