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

问题描述 投票:3回答:6

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

我尝试过这样的事情,但我觉得我很遥远:

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

Magento版本1.7.0.2

预期结果应该是这样的:

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

magento count categories
6个回答
15
投票

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

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

echo($products_count);

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

echo($_productCollection->count());

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);
?>

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

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)

有三种产品仅与衣服直接相关,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)。

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


1
投票

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

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

0
投票

它非常简单,它对我来说只有一行代码

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

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

© www.soinside.com 2019 - 2024. All rights reserved.