ecshop3.6商品如何按照銷量排序


ecshop訂單狀態對應值:
order_status有5中狀態,並且當客戶確認收貨后,order_status的數值不一定是1也有可能是5
order_status = 0表示訂單未確認
order_status = 1表示訂單已經確認
order_status = 2表示訂單已經取消

pay_status = 0表示未付款
pay_status = 2表示已付款

shipping_status = 3表示已配貨
shipping_status = 1表示已發貨
shipping_status = 2表示已收貨

ecshop商品分類列表,商品按照銷量排序,網上有些方法是判斷ecs_order_info.order_status=1來判斷訂單完成狀態,當在ecshop3.6測試發現,當客戶確認訂單后,order_status=5而非1,截圖如下:

截圖可以看到,客戶確認后,但未發貨,而order_status=1,所以取order_status=1作為判斷銷售完成情況,並不對!

考慮到客戶購買商品后,雖然收到貨物,但是也不一定會登錄后台,點擊確認收貨,所以在這里只要判斷pay_status=2,即客戶已付款即可。

找到category.php中category_get_goods方法的sql語句,修改如下:

$sql = 'SELECT (SELECT sum(goods_number) FROM ecs_order_goods where goods_id=g.goods_id and order_id in (select order_id from ecs_order_info where pay_status=2)) as sales, g.goods_id, g.goods_name,g.goods_number,g.goods_name_style, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ' .

                "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, g.promote_price, g.goods_type, " .

                'g.promote_start_date, g.promote_end_date, g.goods_brief, g.goods_thumb , g.goods_img ' .

            'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .

            'LEFT JOIN ' . $GLOBALS['ecs']->table('member_price') . ' AS mp ' .

                "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' " .

            "WHERE $where $ext ORDER BY $sort $order";

 

同時 $sort中設置按銷量排序標志,比如sales
剩下的工作,就比較簡單了,就不再贅述。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM