Prosta funkcja zliczająca produkty w kolekcji

Home / Blog / Prosta funkcja zliczająca produkty w kolekcji

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