【问题标题】:Magento- issaleable filterMagento 可销售过滤器
【发布时间】:2011-11-23 16:34:32
【问题描述】:
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products); 

放置一个过滤器并显示有货的产品,但始终显示可配置的产品——即使它们缺货(因为它们总是有货,但当相关产品过期时 isSaleable 会变为 false。)那么如何我对产品集合应用 IsSaleable 过滤器? (可以直接在产品集合上完成而不遍历集合吗? 缺货意味着库存已用完。

【问题讨论】:

  • 不太确定您的要求,但您可能想看看(至少)Mage_Adminhtml_Block_Catalog_Product_Grid::_prepareCollection()
  • $products = Mage::getResourceModel('reports/product_collection') ->setStoreId($this->getStoreId()) ->addAttributeToSelect('*') ->addOrderedQty() ->setOrder ('ordered_qty', 'desc'); Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($products);我想过滤这个产品集合,显示有库存的项目,AddInStockFilterCollection 可以工作,但对可配置产品失败,所以它们需要被另一个过滤器 ISSaleable 删除,我该怎么做??

标签: magento collections


【解决方案1】:

这应该只为您提供目录可见的简单库存产品。

$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();

【讨论】:

  • addSaleableFilterToCollection 函数已被标记为已弃用并且是一个空存根 - 它什么也不做,据我所知,它从来没有。
  • 正是我需要的
【解决方案2】:

之后

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

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

应该可以。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
相关资源
最近更新 更多