客户希望所有售罄的产品都出现在产品清单的末尾,我很难让它在一分钟内工作,因此问题就在于此。值得注意的是,系统中的所有类别都设置为仅对其产品订购使用“最佳价值”定位,并且必须自动完成此重新定位。
目前我已经在'sales_convert_quote_item_to_order_item'事件中添加了一个观察者,该事件是将购物车项目添加到订单本身的位置(似乎是一个明智的目标地点)。
我发现的问题显然,产品的可用数量存储在产品库存记录中,但产品定位是根据类别本身存储的(然后编入索引)。
我真的不想使用SQL,所以我希望有人可以为使用方法提供某种建议。
My 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;
我认识到这不是一个很好的方法,因此购物车中有很多产品会非常密集。但由于此时没有创建订单,所以我也不能使用它。
我们将非常感激地收到任何指示或建议。
感谢。
答案 0 :(得分:0)
如果我从问题中正确理解:
...A client wants all products that are sold out to appear at the end of the product listings...
如果listing = categories,那你为什么不改变渲染逻辑呢?只需扩展目录产品列表并覆盖get product collection方法。
您需要实现的是所有售罄的产品都在列表的末尾。因此,您可以使用these函数之一对已加载的产品集进行排序。
答案 1 :(得分:0)
您还可以使用畅销书逻辑来列出产品。借助此链接http://inchoo.net/ecommerce/magento/bestseller-products-in-magento/或http://blog.magikcommerce.com/how-to-display-best-selling-products-on-magento-store-home-page/,您将了解如何获得畅销产品,然后您需要将此畅销产品称为畅销产品块在产品列表中。如果您仍在寻找解决方案,希望这会对您有所帮助。