Magento - 获得畅销产品,包括售完产品

时间:2013-10-06 20:09:51

标签: php magento magento-1.7

这是我的代码,但我只获得库存中可用的产品。我想得到所有产品,包括售罄。你有什么想法吗?

 $productCount = 5;
        $storeId    = Mage::app()->getStore()->getId(); 


$productsBestSellerMens = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('*')  
            ->setStoreId($storeId)
            ->addCategoryFilter($mensID)
            ->setPageSize($productCount);

2 个答案:

答案 0 :(得分:1)

OSdave的评论是一个开始寻找问题答案的好地方。

在它的核心Magento在访问数据库时使用Zend_Db。因此,您可以使用'magic'__toString() method of Zend_Db_Select输出由PHP代码生成的基础MySQL查询。由于类别过滤特定于您的情况,我稍微调整了原始代码:

$productCount   = 5;
$storeId        = Mage::app()->getStore()->getId();

$productsBestSellerMens = Mage::getResourceModel('reports/product_collection')
    ->addOrderedQty()
    ->addAttributeToSelect('*')  
    ->setStoreId($storeId)
    ->setPageSize($productCount);

var_dump((string) $productsBestSellerMens->getSelect());
exit;

这是一种粗略但非常简单的方法,可以找到生成的SQL查询:

SELECT 
SUM(order_items.qty_ordered) AS `ordered_qty`,
`order_items`.`name` AS `order_items_name`,
`order_items`.`product_id` AS `entity_id`,
`e`.`entity_type_id`,
`e`.`attribute_set_id`,
`e`.`type_id`,
`e`.`sku`,
`e`.`has_options`,
`e`.`required_options`,
`e`.`created_at`,
`e`.`updated_at` 
FROM `sales_flat_order_item` AS `order_items` 
INNER JOIN `sales_flat_order` AS `order` ON `order`.entity_id = order_items.order_id AND `order`.state <> 'canceled' 
LEFT JOIN `catalog_product_entity` AS `e` ON (e.type_id NOT IN ('grouped', 'configurable', 'bundle')) AND e.entity_id = order_items.product_id AND e.entity_type_id = 4 
WHERE (parent_item_id IS NULL) 
GROUP BY `order_items`.`product_id` 
HAVING (SUM(order_items.qty_ordered) > 0)

正如您在查看查询时所看到的,没有任何可以过滤“售罄”产品的内容。

您可以使用isSaleable()类的Mage_Catalog_Model_Product方法处理“售罄”产品的显示。实践中的一个示例显示在Magento模板文件/app/design/frontend/base/default/template/catalog/product/view.phtml中。

值得注意的是,当我尝试使用相同的方法撤回畅销书列表时,我发现结果与审计的销售数据不符。我们的blog提供了更全面的调查和纠正方法,可以检索出有关审计销售数据的畅销书。

答案 1 :(得分:0)

您可能希望尝试的扩展程序不仅会展示畅销产品,还会展示新/销售/畅销/浏览次数最多/评价最高/推荐/售罄的产品。

来源:http://www.magentocommerce.com/magento-connect/product-gallery.html