$category_id = 20;
$_productCollection = Mage::getModel('catalog/category')->load($category_id)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->addAttributeToFilter('special_price', array('neq' => ""))
->setOrder('name', 'ASC')
;
_getProductCollection()这个方法相信很多人都应该很熟悉,Mage_Catalog_Block_Product_List这个类其实最终是继承自Varien_Data_Collection这个父类,关于Varien_Data_Collection的API大家可以查看官方的解说 http://docs.magentocommerce.com/Varien/Varien_Data/Varien_Data_Collection.html
_getProductCollection()出现在Mage_Catalog_Block_Product_List类中,用于获取一段经过筛选的产品集合。常常用在product list page,如果是外部调用的话就应该直接使用Mage类来调用,很多相似的文章大家可以网上搜搜,这里写一段示范代码,这段代码获取category_id为20的产品分类下的产品并进行筛选,Magento同样使用了数据库抽象层,这样开发人员就避开了SQL语句,直接和OOP打交道就行了。