1. 程式人生 > >ecshop 商品列表頁面 按銷量排行

ecshop 商品列表頁面 按銷量排行

因為網站後期需要,按銷量排序。這種排序方法,需要建立一個欄位來儲存銷量值,所以需要把資料庫中的銷量值取出儲存到新的欄位;

第一步:在表“ecs_goods”新增欄位:salesnum(注:自定義欄位名)

  然後,隨便找個地方,執行下面的函式,就可以把以前銷售資料的銷量值,儲存到新建的欄位裡(PS:執行後,如果新欄位有資料了,就說明執行成功,那麼這個函式就沒有作用了,最好刪除了)

function aa()
{
    $goods_id="select goods_id from ecs_goods";
    $res = $GLOBALS['db']->getAll($goods_id);
    foreach ($res AS $idx => $row)
    {
        $sql="update ecs_goods set salesnum = (select IFNULL(SUM(goods_number), 0) from ecs_order_goods where goods_id=".$row['goods_id'].") where goods_id=".$row['goods_id'];
        $GLOBALS['db']->query($sql);
    }  
}   

第二步:開啟根目錄下檔案:flow.php

找到下面的程式碼:


    $sql = “INSERT INTO ” . $ecs->table(‘order_goods’) . “( ” .
                “order_id, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, “.
                “goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id) “.
            ” SELECT ‘$new_order_id’, goods_id, goods_name, goods_sn, product_id, goods_number, market_price, “.
                “goods_price, goods_attr, is_real, extension_code, parent_id, is_gift, goods_attr_id”.
            ” FROM ” .$ecs->table(‘cart’) .
            ” WHERE session_id = ‘”.SESS_ID.”‘ AND rec_type = ‘$flow_type’”;
    $db->query($sql);

在這段程式碼的下面,新增如下程式碼:


 $sql = “update ” . $ecs->table(‘goods’) . ” set salesnum=salesnum +”.
   ” (SELECT goods_number”.
            ” FROM ” .$ecs->table(‘cart’) .
            ” WHERE session_id = ‘”.SESS_ID.”‘ AND rec_type = ‘$flow_type’) where goods_id=”.
   ” (SELECT goods_id”.
            ” FROM ” .$ecs->table(‘cart’) .
            ” WHERE session_id = ‘”.SESS_ID.”‘ AND rec_type = ‘$flow_type’)”;
 $db->query($sql);

上面程式碼在多商品結算時會出錯,用下面的程式碼:


$sql = “update ” .$GLOBALS['ecs']->table(‘goods’) . ” AS a, “.$GLOBALS['ecs']->table(‘cart’) . ” AS b “.
        ” set a.salesnum= a.salesnum+ b.goods_number”.
        ” WHERE a.goods_id=b.goods_id AND b.session_id = ‘”.SESS_ID.”‘ AND b.rec_type = ‘$flow_type’”;

$db->query($sql);

第三步:開啟檔案:default\library\goods_list.lbi,找到下面的程式碼:

ASCDESC#goods_list”>{$pager.order}default.gif” alt=”{$lang.sort.last_update}”>

在上面那段程式碼的下面新增:

ASCDESC#goods_list”>{$pager.order}default.gif” alt=”按銷量排行”>

兩段程式碼的區別,自己去分析看看吧。

第四步:開啟檔案:category.php(根目錄下面的),找到如下程式碼:

$sort  = (isset($_REQUEST['sort'])  && in_array(trim(strtolower($_REQUEST['sort'])), array(‘goods_id’, ‘shop_price’, ‘last_update’)))

修改為:

$sort  = (isset($_REQUEST['sort'])  && in_array(trim(strtolower($_REQUEST['sort'])), array(‘goods_id’, ‘shop_price’, ‘last_update’,'salesnum’)))

OK!