繁体   English   中英

Magento按分级价格为当前客户群筛选产品集合

[英]Magento filter product collection by tier price for current customer group

如何通过查看是否已设置当前客户组的价格来过滤产品集合?

我认为我需要查看catalog_product_entity_tier_price表,以查看集合中每个产品的current customer_group_id是否存在条目(如果没有,则应从集合中排除/过滤该产品),但我可以弄清楚如何做到这一点。

背景:某些客户群无法使用某些产品,我们正在使用等级价格进行确定(即,是否存在等级价格,是否包含在集合和显示中,如果没有,则排除并不显示)。

任何帮助深表感谢

是的,这应该是可以实现的,但是请不要以表的形式考虑,而是以对象和集合的方式考虑。

Product对象具有getTierPrice方法,该方法使用Factory模式来根据产品类型(简单,捆绑销售等)返回层级定价。 该方法在计算等级价格时会检查当前访问者的组。

因此,层价格不是经典的Magento的属性,这意味着您不能按属性进​​行过滤,而是可以使用集合上的walk函数计算层价格,然后按更新后的值过滤集合。

步行功能的示例可能是:

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->walk('Namespace_Module_Helper_Data::removeStockData',array());

然后在您的Namespace_Module_Helper_Data ,您将得到以下内容:

public static function removeStockData($product = null)
{
    $product->setData('stock_item',null);
    return;
}

或者,您可以通过foreach循环运行集合:

foreach($collection->getItems() as $key => $item){
   if($item->getTierPrice($qty) == $item->getPrice()){  //insert your own criteria
        $collection->removeItemByKey($key);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM