2015-05-29 72 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);