我想显示可配置产品的前端销售数量。我已经有了这个代码,非常适合简单的产品。但是对于可配置产品,总是显示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; ?>
答案 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
希望这比第一次尝试有所帮助。