2015-05-29 1 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-таблицы, когда эта (или несколько других) опция установлена, это одно из основных отличий при включении плоского каталога.

Вы можете Mage :: журнал() запрос для сбора выбора, и посмотреть, что различия с плоской каталог и выключенным, что поможет вам понять различия и отладки:

$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); 
Смежные вопросы