I am using product collection in my custom phtml file I try to add filter only show in stock product but it will not work

My code :

$currentCategory = Mage::registry('current_category');
$catId =47;
$last = date('Y-m-d', strtotime('+1 days'));
$first = date('Y-m-d', strtotime('-365 days'));
$collection = Mage::getModel('catalog/category')->load($catId)
             ->addAttributeToSelect('*') // add all attributes - optional
             ->addAttributeToFilter('status', 1) // enabled
             ->addAttributeToFilter('visibility', 4) //visibility in catalog,search
             ->addAttributeToFilter('updated_at', array(
                        'from' => $first,
                        'to' => $last,
                        'date' => true,
$_helper = $this->helper('catalog/output');


4 Answers 4


I can see that your code does not contain any stock filter you can use this bit of code on the collection

$oCollection = Mage::getModel('cataloginventory/stock_item')
Use Below Query

$productCollection = Mage::getResourceModel('catalog/product_collection')
                        ->addAttributeToSelect(array('name', 'image', 'price'))
                        ->addAttributeToFilter('status', array('eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED));


$this->_productCollection = $productCollection;

Refrence->Get Product Collection Containing In-Stock Products Only


You have to do a collection who display products just who have One minimum quantity (1) and Not out of stock.

$productCollection = Mage::getModel('catalog/product')
         ->addAttributeToFilter('qty', array("gt" => 1))
         ->setCurPage(1) // limit to one page
         ->setPageSize(50); //limit to 50 products

    foreach($productCollection as $product) { 
        if($product->getTypeId() == 'simple')
            echo $product->getName().'<br>';
            echo $product->getProductUrl().'<br>';
            // you can get the other data ...
  • @Ak Jh Please accept the answer that you found helful
    – PЯINCƎ
    Commented Sep 16, 2017 at 2:05

Try this.

You can change setting from admin panel.

For that goto your admin panel and System -> Configuration

Select Inventory tab under CATALOG menu.

Expand Stock options tab and set Display Out of Stock Products to No.

This may be help.

Not the answer you're looking for? Browse other questions tagged or ask your own question.