【发布时间】:2011-12-15 11:06:18
【问题描述】:
一位客户希望所有售罄的产品都出现在产品列表的末尾,而我正在努力让它立即发挥作用,因此提出了这个问题。值得注意的是,系统中的所有类别都设置为仅对其产品订购使用“最佳价值”定位,并且这种重新定位必须自动完成。
目前,我已在“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;
我知道这不是一个很好的方法,因此会非常密集,因为购物车中有很多产品。但是由于此时没有创建订单,所以我也不能使用它。
任何指点或建议将不胜感激。
谢谢。
【问题讨论】:
-
查看库存模型而不是报价项目。
-
报价只是为了获得产品。但我也会往下看那条路线。
-
附带说明,getUserProducts() 方法不可用,因为我是根据报价项而不是产品本身加载它。
标签: magento e-commerce product