Magento - 获取view.phtml中某个类别的项目总数

时间:2013-07-04 19:46:06

标签: magento count categories

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

我尝试过这样的事情,但我觉得我相距甚远:

  

$这 - >助手( '目录/输出') - > $ _ productCollection->计数()

Magento 1.7.0.2版

预期结果应该是这样的:

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

6 个答案:

答案 0 :(得分:14)

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

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

echo($products_count);

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

echo($_productCollection->count());

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

答案 2 :(得分: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();

答案 3 :(得分:1)

我们可以通过两种方式查找某个类别的产品数量。

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

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

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

衣服(6)    - &GT;棉花(3)       - &GT;女性(2)

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

有三种产品仅与衣服直接相关,1种仅含棉花,2种仅含女性。所以它只是忽略了子类别。

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

$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();

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

它将返回服装(6),因为它有3个与其自身相关的产品和3个其子类别的产品。同样 棉(3) 女性(2)。

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

答案 4 :(得分:1)

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

 $this->getCurrentCategory()->getProductCollection()->count();

答案 5 :(得分:0)

这非常简单,仅一行代码就对我来说很好

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

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