如何通过查看是否已设置当前客户组的分级价格来过滤产品集合?
我想我需要查看catalog_product_entity_tier_price
表,看看集合中的每个产品是否有current customer_group_id
的条目(如果没有,则应排除产品/从集合中过滤掉了,但我无法弄清楚如何实现这一目标。
背景:某些产品不适用于某些客户群体,我们使用等级价格来确定(即,如果退出等级价格,包括收集和显示,如果没有,则排除并且不显示)。
非常感谢任何帮助
答案 0 :(得分:1)
是的,这应该是可以实现的,但是尽量不考虑表格,而是作为对象和集合。
Product对象有一个方法getTierPrice
,它使用Factory模式根据产品类型(Simple,Bundle等)返回层定价。该方法在计算等级价格时检查当前访客的组。
因此,等级价格不是经典Magento意义上的属性,这意味着您无法按属性过滤,而是可以使用集合上的walk
函数来计算等级价格,然后过滤更新值的集合。
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);
}
}