ECTOUCH系统默认模板是有显示销量的,但是销量一直为0,第二种方法OK

ECTOUCH系统默认模板是有显示销量的,但是销量一直为0,据说是每个商品必须在手机版购买一次才会显示,具体详情不清楚。

ECTouch官方给了两个解决方法,也就是下文中的,方法一与方法二,但经一流资源网站长测试,会有问题,有些商品分类页会显示空白。

一流资源网找到第三种方法,经测试觉得,还是第三种方法比较靠谱。


前台显示的销量是在goods.dwt模板文件中,对应的字段是{$sales_count}

解决办法一:

打开 /include/apps/default/controller/GoodsController.class.php 文件

注释掉本行$this->assign('sales_count', model('GoodsBase')->get_sales_count($this->goods_id));

改成如下的三行代码:

1
2
3
4
5
/* 销量 start*/
$sql  "select sum(goods_number) as sales_count from" . $this ->model->pre. "order_goods as g left join " . $this ->model->pre. "order_info as o on o.order_id=g.order_id where g.goods_id =" . $this ->goods_id;
         $sales_count  = M()->getOne( $sql );
         $this ->assign( 'sales_count' $sales_count );
/* 销量 end*/

解决方法二:

打开 mobile/include/base/model/GoodsBaseModel.class.php 文件

查找:

1
2
3
4
5
6
7
/**
      * 销量
      * @param unknown $goods_id
      * @return Ambigous      */
     function  get_sales_count( $goods_id ) {
         return  get_goods_count( $goods_id );
     }

替换成:

1
2
3
4
5
6
7
8
9
/**
* 更新销量
* @param unknown $goods_id
* @return Ambigous*/
function  get_sales_count( $goods_id ) {
$sql  "select sum(goods_number) as sales_count from " . $this ->model->pre. "order_goods where goods_id = " . $goods_id ;
$sales_count  = M()->getRow( $sql );
return  $sales_count [ 'sales_count' ];
}

方法三:

打开/include/apps/default/common/function.php 文件

查找:

1
2
3
" AND o . order_status = '"  . OS_CONFIRMED .  "'"  .
         " AND o . shipping_status "  . db_create_in( array (SS_SHIPPED, SS_RECEIVED)) .
         " AND o . pay_status "  . db_create_in( array (PS_PAYED, PS_PAYING)) .

注释或删除 这三行代码就行了。

原理:

目前ecshop的前台暂无实时的销量统计,为了统计商品的销量统计ECTouch新增了ecs_touch_goods表,用于存放商品的销量统计信息。
众所周知,参与销量统计需要满足订单的三个状态:订单的确认状态,订单的支付状态,订单的发货状态;满足了以上三个条件的订单商品,即可参与销量的统计。

可选择性的删除或注释掉上面的三行条件,这样也能虚(夸)高(大)一下销量数据。

你可能感兴趣的:(程序代码,互联网,class,ECHSOP,ECTOUCH,PHP,sql)