2015-05-29 74 views
2

我有一個代碼可以顯示我們商店中最暢銷的產品。如果我禁用平面類別和平面產品,代碼運行良好。有沒有一種方法可以在不禁用平板產品和類別的情況下進行這項工作。謝謝...暢銷產品在啓用平板類別和產品後不顯示

class Mage_Catalog_Block_Product_Viewed extends Mage_Catalog_Block_Product_Abstract{ 
    public function __construct(){ 
     parent::__construct(); 
     $storeId = Mage::app()->getStore()->getId(); 
     $products = Mage::getResourceModel('reports/product_collection') 
      ->addOrderedQty() 
      ->addMinimalPrice() 
      ->addAttributeToSelect('*') 
      ->addAttributeToSelect(array('name', 'price', 'small_image')) 
      ->setStoreId($storeId) 
      ->addStoreFilter($storeId) 
      ->setOrder(‘ordered_qty’, ‘desc’); 
Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products); 
     Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products); 

     $products->setPageSize(15)->setCurPage(1); 
     $this->setProductCollection($products); 
    } 
} 
+1

關懷向我們展示一些代碼?此外,請閱讀:http://stackoverflow.com/help/how-to-ask – Micke

+0

這很可能是因爲'reports/product_collection'僅用於在adminhtml中使用的集合,並未實現要求當啓用扁平產品/類別時正確加載。 –

回答

0

請確保所有產品的屬性,你需要通過查詢返回被標記爲「用於產品列表中的」 = YES在Magento管理(目錄>管理屬性)。當這個(或者其他一些)選項被設置時,屬性只成爲Flat表的一部分,這是啓用平面目錄時的主要區別之一。

你可以魔導師::日誌()查詢的集合中選擇,看看有什麼的差異與平目錄和關閉,這將有助於您瞭解這些差異和調試:

$products->setPageSize(15)->setCurPage(1); 
$products->load(); // this is needed only for debugging, 
        // to get the "real" database query 
        // PLEASE remove this and Mage::log 
        // in production as it would affect performance 
Mage::log((string)$products->getSelect()); 
$this->setProductCollection($products);