显示可配置产品页面上已售出的数量 - Magento

时间:2015-06-15 13:41:43

标签: php magento magento-1.9.1 configurable-product

我想显示可配置产品的前端销售数量。我已经有了这个代码,非常适合简单的产品。但是对于可配置产品,总是显示0。

如何更新,以便它既适用于简单又可配置。当售出数量为0时,也会很酷地隐藏它。

     <?php
     $sku = nl2br($_product->getSku());
     $product = Mage::getResourceModel('reports/product_collection')
     ->addOrderedQty()
     ->addAttributeToFilter('sku', $sku)
    ->setOrder('ordered_qty', 'desc')
    ->getFirstItem();

     echo 'Already Bought '.(int)$product->ordered_qty; ?>

1 个答案:

答案 0 :(得分:0)

您可能遇到问题,因为产品选项可以更改报价/订单中商品的特定SKU。请尝试查找产品ID。

类似的东西(我还没有尝试过这段代码来测试它):

<?php
     $product = Mage::getResourceModel('reports/product_collection')
         ->addOrderedQty()
         ->addAttributeToFilter('id',$_product->getID())
         ->setOrder('ordered_qty', 'desc')
         ->getFirstItem();
     $sold = (int)$product->ordered_qty;
?>

然后,无论您希望它出现在哪里:

<?php
    if ($sold > 0) {
         echo "Already sold $sold times.";
    }
?>

或者你想要显示它。

以下编辑

我会保留上述内容以保持一致性,但是你说得对,它给我带来了同样的错误:

  

致命错误:在第816行的~app / code / core / Mage / Eav / Model / Entity / Abstract.php中的非对象上调用成员函数getBackend()

这让我恼火,所以我这次挖的并没有懒惰,实际上写了一些有用的示例代码。我在这期间也学到了很重要的东西 - 确保在 addOrderedQty()之前总是有addIdFilter() ,否则你的收藏将完全忽略该过滤器。谢谢,Magento。

无论如何,这个小小的自包含示例将获得订购数量并使用产品ID打印,应该非常清楚其中包含的内容。

<?php
require_once '<path_to_magento_root>/app/Mage.php';
Mage::app('default');

$p = Mage::getResourceModel('reports/product_collection')
  ->addOrderedQty()
  ->addIdFilter($argv[1])
  ->getFirstItem();

echo $p->getId().": ".$p->ordered_qty.PHP_EOL;

&GT;

像这样运行:

php test.php 131

你得到这样的输出:

131: 103.0000

希望这比第一次尝试有所帮助。