2012-01-19 14 views
4

Flat Catalog Productオプションを有効にすると、商品レポートのコレクションから「名前、価格など」の商品属性を取得できません。このオプションを有効にすると、すべての属性がcatalog_product_flatに保持されます。だから、私は、ほとんどの視聴された製品を表示する拡張機能を作りたいが、上記の問題のために成功していない。フラット製品の問題

私は多くの方法を試みたが、次のように何事もなかっ:

$collection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect(*) 
    ->setStoreId($store) 
    ->addStoreFilter($store) 
    ->addViewsCount(); 

$collection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect(*) 
    ->addAttributeToSelect(array('name', 'price')) // this will not work is because of the collection 
    ->setStoreId($store) 
    ->addStoreFilter($store) 
    ->addViewsCount(); 

だから、あなたは上記のコレクションを得るために任意のアイデアを持っていますか?

+0

左に必要な属性はメインコレクション –

答えて

5

アンインナートリックを行う必要がありますcatalog_product_flat_ $ storeIdに参加:

$storeId = Mage::app()->getStore()->getId(); 
    $collection = Mage::getResourceModel('reports/product_collection') 
     ->addViewsCount(); 
    $collection->getSelect()->joinInner(array('e2' => 'catalog_product_flat_'.$storeId), 'e2.entity_id = e.entity_id'); 

    foreach ($collection as $prod) { 
     echo "Name: ".$prod->getName()."\n"; 
     echo "Price: ".$prod->getPrice()."\n"; 
     echo "Views: ".$prod->getViews()."\n"; 
     echo "\n"; 
    } 

はいえ、属性でフィルタリングしているように見えることはできません。これは、join & addViewsCount()コールで混乱します。それはselectクエリに属性を追加しますが、*も選択します。

+0

です。ありがとうございました。マイク、私はそれが製品の属性を得た別の方法を試しました。 $ _currentProduct = Mage :: getModel( 'カタログ/製品') - > loadByAttribute( 'sku'、$ sku); ' '$ sku = $ _product-> getData(' sku ');' 'それは '$ _currentProduct'の製品属性 –

+0

また、私たちはあなたの答えを変更することができます。ご存じのように、製品またはカタログのフラットテーブル名は、店舗番号に基づいて変更されます。ストアが複数ある場合は、次のようにテーブル名の末尾にstoreidを置く必要があります。 'catalog_product_flat_ $ storeId' –

+0

問題はありません。元のコレクションから製品を読み込むことができると考えましたが、サーバーにとってはもう少し作業が必要です。店舗IDの良い点。私は一緒に来て他の誰のために私の答えを編集します。 –

関連する問題