2015-06-15 44 views
1

我想顯示可配置產品前端的數量。我已經有了這個代碼,它適用於簡單的產品。但對於配置的產品始終顯示爲0。在產品頁面上顯示已售出數量用於可配置產品 - Magento

如何更新,因此既適用於簡單和可配置的。當賣出量爲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

你可能有問題,因爲產品的選擇可以改變特定的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."; 
    } 
?> 

但是還是要顯示它。

編輯下面

我將離開上述一致性,但你說得對,就引起了我同樣的錯誤:

Fatal error: Call to a member function getBackend() on a non-object in ~app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 816

這惹惱了我,所以我在挖這次並沒有懶惰,而且實際上寫了一些工作示例代碼。我在這裏學到的東西也很重要 - 確保你總是有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; 

>

運行這樣的:

php test.php 131 

而且所得到的輸出是這樣的:

131: 103.0000 

希望這有助於比我第一次嘗試多一點。

+0

感謝您的輸入,我試過,但我得到這個錯誤: 致命的錯誤:調用成員函數getBackend()在〜app/code/core/Mage/Eav/Model中的非對象/Entity/Abstract.php on line 816 –

+0

你說得對,我頭腦快捷的例子並不好。真是一個驚喜。我編輯了我的答案,這次給出實際的工作代碼。 – Mike

相關問題