在过滤导航中使用数量[magento EE]

时间:2016-01-19 18:40:06

标签: magento

我正在使用的用例是所有产品都标记为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分层导航的人对更好的方法有任何意见,建议将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

目前无法发表评论。

试着理解你的问题陈述。以下是我从你的陈述中理解的内容。

  
      
  1. 产品可以在库存时和缺货时购买
  2.   
  3. 目前,您不希望在类别和搜索页面中显示缺货产品。您只想显示库存产品。
  4.   

如果我的理解是正确的,请告诉我。

如果是上述情况,可以通过ADMIN面板轻松实现。

  
      
  1. 导航至系统>配置>目录>库存>股票期权>显示缺货产品>是/否
  2.   
  3. 将此项设置为“是”,以使产品在“类别”和“搜索”(MySQL / SOLR)页面中可见。
  4.   
  5. 将此项设置为“否”,以使产品在“类别”和“搜索页面”中不可见。但是,在这种情况下,产品URL仍然可以正常工作。
  6.   

使用过滤导航时,不会检查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库存/缺货产品的几个基本要点。