ecshop的get_top10函数讲解
2010-03-25 00:18 来源:www.chinab4c.com 作者:admin
本文主要讲解ecshop二次开发中get_top10($cats = '')函数功能.以下是讲解过程
ecshop爱好者 23:34:22
get_top10
春天 23:34:23
也许
ecshop爱好者 23:34:36
里面的参数$cats表示分类ID
23:34:41
对方中止了语音通话,通话时长3分37秒。
ecshop爱好者 23:34:54
如果用在首页,调用所有的排行
ecshop爱好者 23:35:04
那么默认$cats=''
春天 23:35:21
我不说 就是明白
ecshop爱好者 23:35:33
就是在所有分类范围内取得排行
ecshop爱好者 23:35:37
排行的理由很简单
ecshop爱好者 23:35:43
所有分类里面
ecshop爱好者 23:35:48
在规定的时间内
ecshop爱好者 23:36:02
销售越多,就越在排行的前面
ecshop爱好者 23:36:10
$cats = get_children($cats);
$where = !empty($cats) ? "AND ($cats OR " . get_extension_goods($cats) . ") " : '';
ecshop爱好者 23:36:23
get_children是取得分类下所有子分类
春天 23:36:25
==?
春天 23:36:29
我这里没有这个啊
春天 23:36:35
估计版本不一样
ecshop爱好者 23:36:39
你肯定把他删除了
春天 23:36:54
那你把你的那个传给我把
春天 23:37:28
就这样吧 继续
ecshop爱好者 23:38:10
$where = !empty($cats) ? "
春天 23:31:24
开始吧 get_top10
春天 23:31:36
声音小
ecshop爱好者 23:32:29
听的清楚吗
春天 23:32:17
春天 23:32:32
你话筒不好
ecshop爱好者 23:32:36
不是的
ecshop爱好者 23:32:43
我笔记本
ecshop爱好者 23:32:50
不用话筒。都能说
春天 23:32:58
能
春天 23:33:05
说说试试
春天 23:32:03
还很小
春天 23:33:44
nono
春天 23:33:50
声音很小
ecshop爱好者 23:33:53
那就打字把
ecshop爱好者 23:34:13
可能和网速也有关
ecshop爱好者 23:34:22
get_top10
春天 23:34:23
也许
ecshop爱好者 23:34:36
里面的参数$cats表示分类ID
23:34:41
对方中止了语音通话,通话时长3分37秒。
ecshop爱好者 23:34:54
如果用在首页,调用所有的排行
ecshop爱好者 23:35:04
那么默认$cats=''
春天 23:35:21
我不说 就是明白
ecshop爱好者 23:35:33
就是在所有分类范围内取得排行
ecshop爱好者 23:35:37
排行的理由很简单
ecshop爱好者 23:35:43
所有分类里面
ecshop爱好者 23:35:48
在规定的时间内
ecshop爱好者 23:36:02
销售越多,就越在排行的前面
ecshop爱好者 23:36:10
$cats = get_children($cats);
$where = !empty($cats) ? "AND ($cats OR " . get_extension_goods($cats) . ") " : '';
ecshop爱好者 23:36:23
get_children是取得分类下所有子分类
春天 23:36:25
==?
春天 23:36:29
我这里没有这个啊
春天 23:36:35
估计版本不一样
ecshop爱好者 23:36:39
你肯定把他删除了
春天 23:36:54
那你把你的那个传给我把
春天 23:37:28
就这样吧 继续
ecshop爱好者 23:38:10
$where = !empty($cats) ? "
春天 23:50:24
OK
ecshop爱好者 23:50:26
他就要控制了
春天 23:50:50
继续
春天 23:50:48
就是某个分类有普通的 还有 被扩展到的
ecshop爱好者 23:50:57
是的
ecshop爱好者 23:51:06
/* 排行统计的时间 */
switch ($GLOBALS['_CFG']['top10_time'])
{
case 1: // 一年
$top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 365 * 86400) . "'";
break;
case 2: // 半年
$top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 180 * 86400) . "'";
break;
case 3: // 三个月
$top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 90 * 86400) . "'";
break;
case 4: // 一个月
$top10_time = "AND o.order_sn >= '" . date('Ymd', gmtime() - 30 * 86400) . "'";
break;
default:
$top10_time = '';
}
ecshop爱好者 23:51:19
这些没什么说的。取得销售排行计算范围
ecshop爱好者 23:51:26
一年内排行
春天 23:51:26
$GLOBALS['_CFG']['top10_time'] 这个是从shop_config里取的
ecshop爱好者 23:51:31
一周排行
ecshop爱好者 23:51:34
这个是后台设置的
ecshop爱好者 23:51:50
排行统计的时间: 所有 一年 半年 三个月 一个月
ecshop爱好者 23:52:00
ecshop爱好者 23:52:15
通过$_CFG来调用
春天 23:52:17
嗯 尽量说思路 不说语法
ecshop爱好者 23:52:24
这个是系统配置参数
ecshop爱好者 23:52:46
$sql = 'SELECT g.goods_id, g.goods_name, g.shop_price, g.goods_thumb, SUM(og.goods_number) as goods_number ' .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g, ' .
$GLOBALS['ecs']->table('order_info') . ' AS o, ' .
$GLOBALS['ecs']->table('order_goods') . ' AS og ' .
"WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 $where $top10_time " ;
ecshop爱好者 23:52:54
这些是取得商品基本信息了
ecshop爱好者 23:53:01
//判断是否启用库存,库存数量是否大于0
if ($GLOBALS['_CFG']['use_storage'] == 1)
{
$sql .= " AND g.goods_number > 0 ";
}
ecshop爱好者 23:53:05
非常重要
春天 23:53:08
从3个表里查的
ecshop爱好者 23:53:16
是的
春天 23:53:20
为什么?
ecshop爱好者 23:53:23
商品,定单,定单商品
ecshop爱好者 23:53:33
排行需要从销售记录里面
ecshop爱好者 23:53:38
才能叫做销售排行
ecshop爱好者 23:53:48
销售的越多,才能在排行前面
ecshop爱好者 23:53:54
SUM(og.goods_number) as goods_number
春天 23:53:59
明白
ecshop爱好者 23:54:01
这个是统计每个商品 销售次数
ecshop爱好者 23:54:12
$sql .= ' AND og.order_id = o.order_id AND og.goods_id = g.goods_id ' .
"AND (o.order_status = '" . OS_CONFIRMED . "' OR o.order_status >= '" . OS_SPLITED . "') " .
"AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') " .
"AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') " .
'GROUP BY g.goods_id ORDER BY goods_number DESC, g.goods_id DESC LIMIT ' . $GLOBALS['_CFG']['top_number'];
ecshop爱好者 23:54:21
这些都是排行的控制条件
ecshop爱好者 23:54:26
没什么重要的。
ecshop爱好者 23:54:30
最重要的在这里
ecshop爱好者 23:54:39
ORDER BY goods_number DESC
ecshop爱好者 23:54:53
goods_number是每个商品销售的数量统计
春天 23:54:47
降序
ecshop爱好者 23:54:57
desc
ecshop爱好者 23:55:03
表示从高到低
春天 23:55:07
明白
ecshop爱好者 23:55:15
所以为什么销售多的,会排第一
ecshop爱好者 23:55:20
10,9,5,4
ecshop爱好者 23:55:23
这样排序
ecshop爱好者 23:55:29
if ($GLOBALS['_CFG']['use_storage'] == 1)
{
$sql .= " AND g.goods_number > 0 ";
}
ecshop爱好者 23:58:16
库存要大于0。
春天 23:58:17
继续
ecshop爱好者 23:58:27
$arr = $GLOBALS['db']->getAll($sql);
春天 23:58:35
==
ecshop爱好者 23:58:37
这个返回查询排行的数组
春天 23:58:52
$sql .= ' AND og.order_id = o.order_id AND og.goods_id = g.goods_id ' .
"AND o.order_status = '" . OS_CONFIRMED . "' " .
"AND (o.pay_status = '" . PS_PAYED . "' OR o.pay_status = '" . PS_PAYING . "') " .
"AND (o.shipping_status = '" . SS_SHIPPED . "' OR o.shipping_status = '" . SS_RECEIVED . "') " .
'GROUP BY g.goods_id ORDER BY goods_number DESC, g.goods_id DESC LIMIT ' . $GLOBALS['_CFG']['top_number'];
春天 23:59:05
OS_CONFIRMED 这些从哪里来的呢?
ecshop爱好者 23:59:48
这个是全局变量
ecshop爱好者 23:59:54
系统申明的 日期:2010-3-25
春天 0:00:01
在哪里?
ecshop爱好者 0:00:20
ecshop爱好者 0:00:27
ecshop爱好者 0:00:36
春天 0:00:52
说说最后那个for循环吧
ecshop爱好者 0:01:21
for ($i = 0, $count = count($arr); $i < $count; $i++)
{
$arr[$i]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?
sub_str($arr[$i]['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $arr[$i]['goods_name'];
$arr[$i]['url'] = build_uri('goods', array('gid' => $arr[$i]['goods_id']), $arr[$i]['goods_name']);
$arr[$i]['thumb'] = get_image_path($arr[$i]['goods_id'], $arr[$i]['goods_thumb'],true);
$arr[$i]['price'] = price_format($arr[$i]['shop_price']);
}
春天 0:01:24
多占你2分钟 呵呵
ecshop爱好者 0:01:29
这个是循环数组
春天 0:00:42
OK 肯定代表某种情况
春天 0:00:44
过
ecshop爱好者 0:01:49
把所有排行数组放在$arr里面
ecshop爱好者 0:01:57
$arr[$i]['short_name']
ecshop爱好者 0:02:05
这个是截取标题长度了
ecshop爱好者 0:02:15
url 表示商品的地址
ecshop爱好者 0:02:23
goods.php?id=4格式
ecshop爱好者 0:02:28
thumb
ecshop爱好者 0:02:37
这个是缩略图
ecshop爱好者 0:02:47
price这个是价格格式话
ecshop爱好者 0:02:54
格式化
ecshop爱好者 0:03:02
$100
春天 0:03:08
$GLOBALS['_CFG']['goods_name_length'] > 0 ?
sub_str($arr[$i]['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $arr[$i]['goods_name'];
ecshop爱好者 0:03:10
这个是美元格式
春天 0:03:18
这个是截取多长多长吧
ecshop爱好者 0:03:27
是的。后台系统配置设置的
春天 0:03:32
build_uri('goods', array('gid' => $arr[$i]['goods_id']), $arr[$i]['goods_name']);
春天 0:03:41
这个是建立什么网址?
ecshop爱好者 0:03:47
这个是通过商品ID来生成路径
ecshop爱好者 0:04:02
就建立goods.php?id=4的模式
ecshop爱好者 0:04:23
比如商品ID是2
ecshop爱好者 0:04:29
那么他将生成
ecshop爱好者 0:04:38
goods.php?id=2
春天 0:04:41
嗯
ecshop爱好者 0:05:06
基本上是这样了
ecshop爱好者 0:05:08
呵呵
ecshop爱好者 0:05:18
有那里不明白 ?
春天 0:05:18
嗯 明白了
ecshop爱好者 0:05:27
不着急。漫漫来
春天 0:05:33
主要是通过好几个表 查了些东西
春天 0
主讲人:ecshop爱好者
来源:中国B4C电子商务
最近更新
常用插件
- ecshop二次开发商品购买备
ecshop销售统计 插件介绍:ecshop二次开发订单销售统计和商品购买备注服...
- ecshop商品库存缺货发货量
ecshop商品库存缺货发货量数据倒出插件上海汽车租赁www.shrentbus.cn...
- ecshop2.7.0utf给属性增加库存
插件介绍:本插件适合ecshop2.7.0的utf8编码对商品的属性进行库存管理...
- ecshop导出会员邮件和手机
ecshop导出会员邮件和手机号插件,主要是用于ecshop系统中促销活动中。获...
- ecshop直接购买流程二次开
ecshop当全场免除运费的时候,其实大可以开发新的直接购买流程,方便...