4

如何获得项目的总数,我想在类别 view.phtml 文件中显示它。通常这个值在 Toolbar.phtml 中。

我已经尝试过这样的事情,但我认为我离得很远:

$this->helper('catalog/output')->$_productCollection->count()

Magento 版本 1.7.0.2

预期的结果应该是这样的:

此类别中的项目:17 17 应该是总数。如果可能,应包括子类别项目。

4

6 回答 6

15

假设您想在 view.phtml 中显示它,您已经拥有当前类别对象,因此您可以使用$_category->getId()

 $products_count = Mage::getModel('catalog/category')->load($_category->getId())
 ->getProductCount();

echo($products_count);

如果你想在 list.phtml 中使用它,你可以使用

echo($_productCollection->count());
于 2013-07-04T21:52:31.010 回答
7

尝试这个,

<?php $_helper = $this->helper('catalog/output');?>
<?php $_category_detail = Mage::registry('current_category');?>
<?php $_category_detail->getName();?>
<?php $_category_detail->getId(); ?>

<?php $products_count = Mage::getModel('catalog/category')->load($_category_detail->getId())
        ->getProductCount();
echo($products_count);
?>
于 2013-07-05T09:14:14.390 回答
6

基本上,您无法在 view.phtml 中显示过滤项目的总数。原因是,获取总金额的逻辑不存在于view.phtml的$this上下文中。但是该逻辑在Mage_Catalog_Block_Product_List_Toolbar块中可用,它是 Mage_Catalog_Block_Product_List 的子

这基本上意味着您实际上可以通过实例化工具栏和列表块来获得过滤项目的总数。之后,工具栏块的集合必须设置为列表块集合的值。

以下代码在view.phtml文件中用于从工具栏块中获取过滤后的项目总量:

$toolbar = new Mage_Catalog_Block_Product_List_Toolbar();
$list = new Mage_Catalog_Block_Product_List();
$toolbar-> setCollection($list -> getLoadedProductCollection());
$products_count = $toolbar -> getTotalNum();
于 2015-06-08T09:48:18.947 回答
1

有两种方法可以找到一个类别的产品数量。

$collection = Mage::getModel('catalog/category')->getCollection()
             ->addAttributeToSelect('name')
             ->addAttributeToSelect('level')
             ->addAttributeToSelect('entity_id');

foreach($collection as $cat)
    $cat->getProductCount();

这只会为您提供最深类别的产品数量。例如,您有以下类别。考虑树状结构。

衣服(6) ->棉(3) ->女装(2)

从上面给出的一段代码返回的结果。衣服(3) 棉质(1) 女装(2)

仅与 Clothes 直接相关的三种产品,一种与纯棉产品有关,另一种与仅女性产品有关。所以它只是忽略了子类别。

另一种方法是从产品角度获取产品数量。

$current_category = Mage::getModel('catalog/category')->load($cat->getEntityId());

$productCount = Mage::getModel('catalog/product')->getCollection()
                ->addFieldToFilter('manufacturer',$this->manufacturer["id"])
                ->addFieldToFilter('visibility',4)
                ->addFieldToFilter('status',1)
                ->addCategoryFilter($current_category)->getSize();

这为我们提供了过滤产品属性的额外好处。但是在上述情况下,返回的计数会略有不同。

它将返回 Clothes (6),因为它有 3 种产品与其自身相关联,另外 3 种产品与其子类别相关联。同样棉花(3)妇女(2)。

因此,为了获得有效的结果,最好将两者混合使用。

于 2014-08-19T02:12:57.630 回答
1

在视图中加载其他模型是不正确的,因为您已经拥有可以从中检索产品集合的模型实例。

 $this->getCurrentCategory()->getProductCollection()->count();
于 2015-09-01T15:06:24.833 回答
0

它非常简单,对我来说效果很好,只需一行代码

<?php echo Mage::registry('current_category')->getProductCount();?>

它将显示当前类别的产品数量

于 2019-02-26T13:20:48.890 回答