2011-11-23 77 views
4
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products); 

把一個過濾器,並顯示其有庫存的產品,但始終顯示配置的產品,即使他們都脫銷的(因爲他們總是在股票,但isSaleable得到假時,他們的相關產品)因此,如何在產品集合上應用IsSaleable過濾器? (能不能直接做了一個產品集合,而不遍歷集合。 缺貨意味着庫存結束。Magento- issaleable過濾

+0

不太某些關於你問,但你可能想看看(至少)在'Mage_Adminhtml_Block_Catalog_Product_Grid :: _ prepareCollection()' – benmarks

+0

$產品=法師:: getResourceModel( '報告/ product_collection') - > setStoreId($ this-> getStoreId()) - > addAttributeToSelect('*') - > addOrderedQty() - > setOrder('ordered_qty','desc'); Mage :: getSingleton('cataloginventory/stock') - > addInStockFilterToCollection($ products); 我想過濾這個產品集合顯示的項目是在股票,AddInStockFilterCollection工程,但失敗的可配置產品,所以他們需要被另一個過濾器刪除ISSaleable,我該怎麼做? – sushantsahay

回答

-1

Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products); 

$products->addAttributeToFilter('is_saleable', TRUE); 

應該工作。

+0

謝謝。 http://stackoverflow.com/questions/5301841/filtering-product-collection-on-is-salable 沒有這樣的過濾器。我需要一些方法來過濾出可配置的產品 – sushantsahay

4

這應該給你只是目錄中可見的簡單的庫存產品。

$products = Mage::getModel('catalog/product')->getCollection(); 
$products->addAttributeToFilter('status', 1); // enabled 
$products->addAttributeToFilter('type_id', 'simple'); 
//$products->addAttributeToFilter('sku', array('1234')); //for testing purposes 
$products->addAttributeToSelect('*'); 
Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($products); 
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products); 
$prodIds = $products->getAllIds(); 
+0

addSaleableFilterToCollection函數已被標記爲不推薦使用,並且是一個空的存根(stub) - 它什麼也不做,據我所知,它從來沒有做過。 –

+0

正是我需要的 – FosAvance