Bardzo prosta funkcja zliczająca wszystkie produkty z uwzględnieniem ich statusu, widoczności oraz dostępności. Należy ją umieścić w modelu dla kategorii w Corze Magento – /app/code/core/Mage/Catalog/Model/Category.php.
public function getFrontentProductCount() { $collection = Mage::getResourceModel('catalog/product_collection') ->addCategoryFilter($this) ->joinField('stock_status','cataloginventory/stock_status','stock_status', 'product_id=entity_id', array( 'stock_status' => Mage_CatalogInventory_Model_Stock_Status::STATUS_IN_STOCK, 'website_id' => Mage::app()->getWebsite()->getWebsiteId(), )) ; Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); return $collection->count(); }
Następnie w dowolnym miejscu frontend’u, mając ID kategorii odwołujemy się do danego modelu i funkcji.
$loadedCategory = Mage::getModel('catalog/category')->load($_category->getEntityId()); echo $loadedCategory->getFrontentProductCount();