[英]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.