2013-07-04 3 views
3

Как получить общее количество элементов, я хочу показать их в файле категории view.phtml. Обычно это значение находится в Toolbar.phtml.Magento - Получить общее количество элементов в категории в view.phtml

Я пытался что-то вроде этого, но я думаю, что я довольно далеко:

$ this-> помощник ('каталог/выход') -> $ _ productCollection-> COUNT()

Magento версия 1.7.0.2

Ожидаемый результат должен быть что-то вроде этого:

товары в этой категории: 17 должно быть общее число. Если возможно, следует включать элементы подкатегории.

ответ

14

Предполагая, что вы хотите, чтобы отобразить его в view.phtml у вас уже есть текущий объект категории там, так что вы можете использовать $_category->getId()

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

echo($products_count); 

Если вы хотите использовать его в list.phtml вы можете использовать

echo($_productCollection->count()); 
+1

Это именно оно: D –

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

yeh thats я хочу .. Спасибо Hardik. – Lawrance

+1

Этот тоже отлично работает. –

+1

Идеальное решение. Благодарю . –

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).

Так что для эффективных результатов было бы неплохо использовать смесь обоих.

4

В принципе, вы не можете отображать общее количество фильтрованных элементов в вашем view.phtml. Причина в том, что логика, которая получает общую сумму, отсутствует в $ this контекст view.phtml. Но логика доступна в блоке 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(); 
0

Это не правильно загрузить дополнительную модель вид изнутри, потому что вы уже есть экземпляр модели, из которого вы можете получить сбор продукта.

$this->getCurrentCategory()->getProductCollection()->count(); 
Смежные вопросы