我正在使用的用例是所有产品都标记为is_in_stock = 1,因为无论物品是否在手边,都可以购买这些物品。但是我只需要显示qty值大于零的值。如果用户决定他们只想看看手头有什么。
我想出了如何通过将cataloginventory / stock_item表与当前集合和数量过滤相结合来选择正确的集合。然而,我对如何在前端应用这一点以及这可能产生的副作用有点不知所措,因为“数量”这样的问题。永远不会传递给solr。
$collection = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->joinField('qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left')
->addAttributeToFilter('qty', array("gt" => 0));
如果有经验使用EE分层导航的人对更好的方法有任何意见,建议将不胜感激,谢谢。
答案 0 :(得分:0)
目前无法发表评论。
试着理解你的问题陈述。以下是我从你的陈述中理解的内容。
- 产品可以在库存时和缺货时购买
- 目前,您不希望在类别和搜索页面中显示缺货产品。您只想显示库存产品。
醇>
如果我的理解是正确的,请告诉我。
如果是上述情况,可以通过ADMIN面板轻松实现。
- 导航至系统>配置>目录>库存>股票期权>显示缺货产品>是/否
- 将此项设置为“是”,以使产品在“类别”和“搜索”(MySQL / SOLR)页面中可见。
- 将此项设置为“否”,以使产品在“类别”和“搜索页面”中不可见。但是,在这种情况下,产品URL仍然可以正常工作。
醇>
使用过滤导航时,不会检查STOCK的条件。它检查STATUS和VISIBILITY
从性能角度来看,上面编写的代码块很好。这是否意味着您将使用QTY进行过滤?
如果是这种情况,并且您使用MySQL / SOLR进行搜索,则需要使用上述代码块修改产品集合。
如果按以下方式使用,这不会产生负面影响:
使用所有必需的属性过滤器(默认magento)形成最终集合后,再添加代码块。
**不要使用上面提到的代码实例化集合。
$collection->joinField('qty',
'cataloginventory/stock_item',
'qty',
'product_id=entity_id',
'{{table}}.stock_id=1',
'left')
->addAttributeToFilter('qty', array("gt" => 0));
我不确定我是否能回答你的问题。但是,这些是关于过滤导航,SOLR / MySQL搜索,类别和搜索页面w.r.t库存/缺货产品的几个基本要点。