【问题标题】:Set position of product when it sells out in Magento在 Magento 中设置产品售罄时的位置
【发布时间】: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


【解决方案1】:

如果我从问题中得到正确理解:

...A client wants all products that are sold out to appear at the end of the product listings...

如果列表 = 类别,那你为什么不改变渲染逻辑呢?只需扩展目录产品列表并覆盖获取产品集合方法。

您需要实现的是所有已售罄的产品都在列表的末尾。因此,您可以使用 these 函数之一对加载的产品集合进行排序。

【讨论】:

  • 谢谢,这已经被建议了。我试图按照客户的要求开始,但我现在正试图走这条路。
【解决方案2】:

您也可以使用畅销产品逻辑来列出产品。借助此链接http://inchoo.net/ecommerce/magento/bestseller-products-in-magento/http://blog.magikcommerce.com/how-to-display-best-selling-products-on-magento-store-home-page/,您将知道如何获得畅销产品,然后您需要在产品列表中调用此畅销产品块。如果您仍在寻找解决方案,希望这会对您有所帮助。

【讨论】:

  • 没有看到这个回复。在这种情况下,这实际上并没有帮助,因为它必须在集合上无缝自动完成,而不是使用包含的块。
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多