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


Show Quantity Sold On Product Page for Configurable - Magento

我想显示可配置产品的前端销售数量。我已经有了这个代码,非常适合简单的产品。但对于可配置产品,始终显示 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; ?>

您可能会遇到问题,因为产品选项可以更改报价/订单中商品的特定 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()

这让我很恼火,所以我这次没有偷懒,实际上写了一些工作示例代码。在此期间,我也学到了一些重要的东西 - 确保在addIdFilter()之前始终有addOrderedQty(),否则您的收藏将完全忽略该过滤器。谢谢,马真托。

无论如何,这个独立的小示例将获取订购数量并使用产品 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;

?>

像这样运行它:

php test.php 131

你会得到这样的输出:

131: 103.0000

希望这比我的第一次尝试更有帮助。