【问题标题】:Bestsellers not showing after enabling flat category and products启用平面类别和产品后未显示畅销书
【发布时间】:2015-05-29 07:17:17
【问题描述】:

我有一个代码来显示我们商店中最畅销的产品。如果我禁用平面类别和平面产品,该代码运行良好。有没有办法在不禁用平面产品和类别的情况下完成这项工作。谢谢...

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);
    }
}

【问题讨论】:

  • 想给我们看一些代码吗?另外请阅读:stackoverflow.com/help/how-to-ask
  • 这更有可能是因为reports/product_collection 只打算作为adminhtml 中使用的集合,并没有实现启用平面产品/类别时正确加载的要求。

标签: php magento flat


【解决方案1】:

请确保您的查询需要返回的所有产品属性在 Magento 管理员(目录 > 管理属性)中标记为“在产品列表中使用”=YES。只有在设置了这个(或其他几个)选项时,属性才会成为平面表的一部分,这是启用平面目录时的主要区别之一。

您可以 Mage::log() 查询集合选择,并查看打开和关闭平面目录的差异,这将帮助您了解差异和调试:

$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);

【讨论】:

    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多