一直以来,实现畅销排行(Bestseller)的插件或自己写的模块,其核心的代码都是一致的,如下:
$products = Mage::getResourceModel('reports/product_collection')
->addOrderedQty()
//->addAttributeToSelect('*')
->addAttributeToSelect(array('name', 'price', 'small_image', 'short_description', 'description')) //edit to suit tastes
->setStoreId($storeId)
->addStoreFilter($storeId)
->setOrder('ordered_qty', 'desc');
原理是从销售记录的表中取出数据按产品销量排序,正常情况下取出的数据没有问题,但在类似服装站这种大量使用可配置产品(Configurable Product)的情况下,会发现这种排序只能针对简单产品(Simple Product),即便是如Luxe_Bestsellers这个插件那样可以显示可配置产品到畅销排行,其原理也是获取销量最好的简单产品,根据简单产品去获得其对应的父产品(可配置产品),这时候排序就很有可能是不正确的。比如1号可配置产品的某个颜色的某个尺码卖了20件,而其它颜色尺码总共只卖了几件,而2号可配置产品的所有颜色尺码的销量远超1号,比如有50件,但只要2号可配置产品没有任何一件子产品销量超过20,在排行榜上2号就会在1号之后。
如何让销量的排行真实,还在研究中………………