[英]Magento List all out of stock items
我正在嘗試制作一個列出所有缺貨商品的cms頁面。
protected function _getProductCollection()
{
$collection = Mage::getModel('catalog/product')->getCollection();
$collection = $this->_addProductAttributesAndPrices($collection)
->addStoreFilter()
->addAttributeToSort('entity_id', 'desc') //<b>THIS WILL SHOW THE LATEST PRODUCTS FIRST</b>
->addAttributeToFilter('stock_status', 0)
->setPageSize($this->get_prod_count())
->setCurPage($this->get_cur_page());
$this->setProductCollection($collection);
return $collection;
}
但它沒有用。 它列出了所有項目。 列出qty = 0或is_in_stock = 0的所有項目的方法是什么?
這是我一直在使用的功能
function getOutOfStockProducts()
{
$products = Mage::getModel('catalog/product')
->getCollection()
->joinField(
'is_in_stock',
'cataloginventory/stock_item',
'is_in_stock',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left'
)
->addAttributeToFilter('is_in_stock', array('eq' => 0));
return $products;
}
你應該使用不同的集合
$outOfStockItems = Mage::getModel('cataloginventory/stock_item')
->getCollection()
->addFieldToFilter('is_in_stock', 0);
這是我最終使用的方式。 提供后端缺貨的所有商品清單
protected function _getProductCollection()
{
$stockCollection = Mage::getModel('cataloginventory/stock_item')->getCollection()
/*->addFieldToFilter('is_in_stock', 0);*/ //this can also be used to filter
->addFieldToFilter('qty', 0);
$productIds = array();
foreach ($stockCollection as $item) {
$productIds[] = $item->getOrigData('product_id');
}
$productCollection = Mage::getModel('catalog/product')->getCollection();
$productCollection = $this->_addProductAttributesAndPrices($productCollection)
->addIdFilter($productIds)
->addAttributeToSort('entity_id', 'desc') //THIS WILL SHOW THE LATEST PRODUCTS FIRST
->setPageSize($this->get_prod_count())
->setCurPage($this->get_cur_page());
$this->setProductCollection($productCollection);
return $productCollection;
}// _getProductCollection
}// Mage_Catalog_Block_Product_Outofstock
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.