カテゴリの製品数を見つける方法は 2 つあります。
$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)
衣服のみに直接関連する 3 つの製品があり、1 つは綿のみ、2 つは女性のみです。したがって、サブカテゴリは単に無視されます。
もう 1 つの方法は、製品の観点から製品数を取得することです。
$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();
これにより、製品属性をフィルタリングするという追加の利点が得られます。ただし、上記のシナリオでは、返されるカウントはわずかに異なります。
それ自体に 3 つの製品が関連付けられており、サブカテゴリにさらに 3 つの製品が関連付けられているため、Clothes (6) が返されます。同様にコットン(3) 女性(2)。
したがって、効率的な結果を得るには、両方を組み合わせて使用するとよいでしょう。