Here’s a simple setup for a product collection with the following filters used in most of my modules, ideal for things like product feeds etc.
It has the following filters
– By Store
– Must have price > 0
– Must cost > 0
– Only simple products
– Visible either Catalog,Search or Both
$visibility = array(
Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG,
Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
);
$storeId = 1;
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->getEntity()->setStoreId($storeId);
// Reset the select.
$collection->getSelect()->reset();
// Update table name.
$reflectionMethod = new ReflectionMethod($collection, '_initSelect');
$reflectionMethod->setAccessible(true);
$reflectionMethod->invoke($collection);
$collection
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToSelect('description')
->addAttributeToSelect('small_image')
->addAttributeToSelect('manufacturer')
->addAttributeToSelect('msrp')
->addAttributeToFilter('visibility', $visibility)
->addAttributeToFilter('status', '1')
->addAttributeToFilter('type_id', array('eq' => 'simple'))
->addFinalPrice()
->setPageSize(900000)
->setCurPage(1);