質問

私はPHPが初めてです。私が見つけたコードを使用して、ベストセラー製品リストを取得しようとしています Mage_Adminhtml_Block_Dashboard_Tab_Products_Ordered からのクラス _prepareCollection 方法。

if ($this->getParam('website')) {
        $storeIds = Mage::app()->getWebsite($this->getParam('website'))->getStoreIds();
        $storeId = array_pop($storeIds);
    } else if ($this->getParam('group')) {
        $storeIds = Mage::app()->getGroup($this->getParam('group'))->getStoreIds();
        $storeId = array_pop($storeIds);
    } else {
        $storeId = (int)$this->getParam('store');
    }

    $_productCollection = Mage::getResourceModel('sales/report_bestsellers_collection')
        ->setModel('catalog/product')
    ;                                
?>

しかし、私はベストセラー製品リストを取得することはできません。使用してチェックしたときに何か他のもの(非常に大きなダンプテキスト)を取得しています

<?php echo Zend_Debug::dump($_productCollection); ?>

PS:$ _ProductCollectionは変数であり、一連の製品を保存して、後でForeachループで使用できるようにします。

役に立ちましたか?

解決

繰り返すことができます $_productCollection 製品を入手してください。

foreach ($_productCollection as $product){
    //do something with $product
    //for example
    //Zend_Debug::dump($product->getData());
}

編集コレクション内の各製品は、実際には製品ではありません。注文された数量に関する詳細のみが含まれています。
あなたが電話するなら getData 製品では、このようなものを手に入れます:

Array
(
    [period] => 2013-01-01 // probably January 1st current year
    [qty_ordered] => 2.0000// qty ordered
    [product_id] => 176 // id of product
    [product_name] => PRODUCT NAME HERE
    [product_price] => 44.99 //product price here
)

完全な製品を取得するには、これを行う必要がある場合があります。

foreach ($_productCollection as $product){
    $p = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($product->getProductId());
    //attach the ordered qty
    $p->setQtyOrdered($product->getQtyOrdered());
    //do something with $p
    //for example
    //Zend_Debug::dump($p->getData());
}

使用しても大丈夫ではないことを知っています load ループで。パフォーマンスの問題を引き起こす可能性がありますが、多くの製品がない場合は大丈夫です。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top