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表,用于存放商品的销量统计信息。
众所周知,参与销量统计需要满足订单的三个状态:订单的确认状态,订单的支付状态,订单的发货状态;满足了以上三个条件的订单商品,即可参与销量的统计。
可选择性的删除或注释掉上面的三行条件,这样也能虚(夸)高(大)一下销量数据。