質問

ベストセラー製品とそのカテゴリ名をリストする必要があります。このために使用しました

$_storeId = Mage::app()->getStore()->getId();
$_products = Mage::getResourceModel('reports/product_collection')
        ->addOrderedQty()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('visibility', array(
            Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
            Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
        ))
        ->setOrder('ordered_qty', 'desc');

そして、個々の製品を取得するために:

foreach ($_products as $_product) {
//code need to be added here
}

しかし、私はカテゴリ名をから取得する方法を得ていません $_product.

私はもう試した

$_product->getCollection()->getCategoryIds();

しかし、私のスクリプトは死に、さらに実行しません。

役に立ちましたか?

解決

これは、技術的にはタイプの製品コレクションではありません catalog/product, 、あなたがする必要があるのは次のとおりです。

$_storeId = Mage::app()->getStore()->getId();
$_products = Mage::getResourceModel('reports/product_collection')
    ->addOrderedQty()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('visibility', array(
        Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
        Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
    ))
    ->setOrder('ordered_qty', 'desc');
foreach ($_products as $_product){
    $product = Mage::getModel('catalog/product')->load($_product->getId());
    $category_ids = $product->getCategoryIds();
    foreach ($category_ids as $category_id){
        $category = Mage::getModel('catalog/category')->load($category_id);
        <!-- do what you want to with the category here --> 
    }
}

編集:コメントによると、コレクションサイズを制限するには:

$_products = Mage::getResourceModel('reports/product_collection')
    ->addOrderedQty()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('visibility', array(
        Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH,
        Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
    ))
    ->setOrder('ordered_qty', 'desc');
$_products->getSelect()->limit(5); //or whatever integer you want
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top