ecshop 商品列表页面 按销量排行
2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家
商品列表页面的按上架时间、价格、更新时间是默认的,现在需要添加的是按销量排行,但是在商品表里面没有销量的字段,这样的话,必须二次开发才可以解决。 网上搜索了老半天,没有解决问题,唯一有线索的是,二次开发需要支付200元的。 研究了半天,终于解决了,现在分享给大家。 STEP1:在表“ecs_goods”添加字段:salesnum(注:自定义字段名) STEP2:打开根目录下文件: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); 在这段代码的下面,添加如下代码: /* 插入商品表的salesnum 字段,统计销量排行 */ $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); STEP3:打开文件:default\library\goods_list.lbi,找到下面的代码: <a href=”category.php?category={$category}&display={$pager.display}&brand={$brand_id}&price_min={$price_min}&price_max={$price_max}&filter_attr={$filter_attr}&page={$pager.page}&sort=last_update&order=<!– {if $pager.sort == ‘last_update’ && $pager.order == ‘DESC’} –>ASC<!– {else} –>DESC<!– {/if} –>#goods_list”><img src=”images/last_update_<!– {if $pager.sort == ‘last_update’} –>{$pager.order}<!– {else} –>default<!– {/if} –>.gif” alt=”{$lang.sort.last_update}”></a> 在上面那段代码的下面添加: <a href=”category.php?category={$category}&display={$pager.display}&brand={$brand_id}&price_min={$price_min}&price_max={$price_max}&filter_attr={$filter_attr}&page={$pager.page}&sort=salesnum&order=<!– {if $pager.sort == ’salesnum’ && $pager.order == ‘DESC’} –>ASC<!– {else} –>DESC<!– {/if} –>#goods_list”><img src=”images/sales_<!– {if $pager.sort == ’salesnum’} –>{$pager.order}<!– {else} –>default<!– {/if} –>.gif” alt=”按销量排行”></a> 两段代码的区别,自己去分析看看吧。 STEP4:打开文件: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! 就是如此之简单。 转自:http://www.pksafe.cn/blog/677.html |
回答:
好东西 支持 |
== 我试了一下,上面代码有个问题: 买一种商品还好,要是买多种商品,点击确认订单就会报错:
|
这哥们是抄的。。~ |
好心人,辛苦了!!! |
很想搞一个商城,不知道怎么弄啊 |
测试可用了吗 顶一个 支持共享 |
//解决三楼的问题。 $sql = "update " .$GLOBALS['ecs']->table('goods') . " AS a, ".$GLOBALS['ecs']->table('cart') . " AS b ". " set a.saleqt= a.saleqt + 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); |
感谢ls,测试成功,确实解决了3l的问题 |
补充一下,saleqt换成salesnum即可 |
你这个方法有点搓,本身数据库表不能随意更换添加字段。而且每次排序还要进行数据库的写入操作。我建议还是每次进行排序的时候,将商品表左连接订单表(count()方法),然后根据销售数量排序 |
学习下!!!! |
这办法好用吗?图标显示不出来,怎么弄? |
学习一下 |
我个人也比较赞同11楼的看法,其实数据库根本没有必要在新增一字段,那样操作反而复杂化。只是为了一个销量排行就要增加字段,太不值了。 完全可以使用表的关联性 实现 |
最近更新
常用插件
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
ecshop热门问答
ecshop热门资料
ecshopASP
ecshop商品数量
ecshop敏感
ecshop发表
ecshop员工培训
ecshop后台错误代码
ecshop运行
ecshopmodel
ecshop出色网购
ecshopapproved
ecshop改掉
ecshop404未找到
ecshop点击率排序
ecshopipad
ecshop厂长
ecshopcls_template
ecshop倒序
ecshop年月日
zencart销售排行
ecshop网站管理员
ecshop开发技巧
ecshop痕迹
ecshop回报
ecshop会员登录后
ecshop遭遇
ecshop动态
ecshop白屏
ecshop国产软件
ecshop批量取消推荐
ecshop英国