2011-01-31 62 views
1

如何通過查看是否設置了當前客戶組的分級價格來過濾產品收集?按當前客戶組的價格級別收集Magento過濾器產品

我想我需要查看catalog_product_entity_tier_price表,看看是否有集合中每個產品的current customer_group_id條目(如果沒有,產品應該從集合中排除/過濾),但是我無法弄清楚如何做到這一點。

背景:某些產品不適用於某些客戶羣體,我們正在使用等級價格做出該決定(即,如果等級價格退出,則包括在收集和顯示中,如果不包括,則不顯示) 。

任何幫助深表感謝

回答

1

是啊,這應該是可以實現的,但儘量不要去想它在表中的條款,而是作爲對象和集合。

Product對象有一個方法getTierPrice,它使用Factory模式根據產品類型(Simple,Bundle等)返回層定價。該方法在計算層級價格時檢查當前訪問者的組。

因此,層級價格不是經典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); 
    } 
} 
+0

謝謝。雖然我理解你在理論上說的話,但我沒有成功地付諸實踐。你有任何鏈接到實際的代碼示例,可以幫助我瞭解如何做到這一點? – 2011-02-09 19:47:03