客戶希望所有已售罄的產品都出現在產品列表的末尾,我正努力讓它在一分鐘內正常工作,因此存在問題。值得注意的是,系統中的所有類別都被設置爲僅爲其產品訂購使用「最佳價值」定位,並且此重新定位必須自動完成。在Magento銷售時設置產品的位置
目前,我已向「sales_convert_quote_item_to_order_item」事件添加了一個觀察者,這是將購物車項目添加到訂單本身的位置(似乎是一個明智的目標位置)。
我發現的問題顯然是,產品的可用數量存儲在產品庫存記錄中,但產品定位是針對類別本身存儲的(然後編入索引)。
我真的不想訴諸使用SQL,所以希望有人能夠提供某種方法使用的建議。
我的Observer方法當前看起來像這樣,但它不起作用,因爲getUsedProducts方法由於某種原因不可用。這是無論如何:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach($cart->getAllItems() as $key=>$item):
print_r(get_class_methods($item));
echo ">>> ".$item->getProductType();
if($item->getProductType()):
$item = $item->load($item->getId());
//print_r(get_class_methods($item));
$_productCollection = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$item);
print_r($_productCollection);
$stockLevel = 0;
foreach($_productCollection as $product):
$childProductData = $product->getData();
$stockLevel+= $childProductData['stock_item']['qty'];
endforeach;
echo "<br />STOCK LEVEL: $stockLevel<br />";
if($stockLevel <= 0):
echo "ZERO";
//return true;
endif;
endif;
echo "<br />";
endforeach;
我承認,這是不是這樣做的一個很好的方式,因此將是相當密集它有在車的產品很多。但由於此時訂單並未創建,因此我也無法使用它。
任何指針或建議將受到感謝。
謝謝。
查看庫存模型而不是報價項目。 – 2011-12-15 11:24:12
報價只是爲了獲得產品。但我也會看到這條路線。 – Dan 2011-12-15 12:00:29
作爲一個方面說明,getUserProducts()方法不可用,因爲我是基於報價項加載它,而不是產品本身。 – Dan 2011-12-15 12:14:56