ECSHOP -> 二次开发指南帖
2016-07-07 14:56 来源:www.chinab4c.com 作者:ecshop专家
临时接了个网站任务,其中有一部分就是关于ECSHOP二次开发作为网站商城频道的,受限于服务细则,就不公布具体的开发接过了,不过其中一部分关于ECSHOP普遍需求较多,并且我已经解决掉的,可以公开自己的思路,有一定编程能力的站长可以自己尝试动手,我会写得尽量详细。能力差些的站长,如果有一些共性的问题,也可以提出来,如果是我解决过的,可以贴出部分修改代码,或者是给出具体解决方法。 对于大家的问题,我会尽量上来看,并针对较多的问题,及时回复。有需要的可以PM或者MSN Q之类的联系,但我们是一家在北京的工作室,所以对于希望低价或者免费获取高质量服务的,另寻他途,呵呵,没办法,北京这地方,生存压力太大了。 好了,废话不多说, 下面贴一个比较常遇到的问题,就是关闭浏览器后,用户的购物车数据就丢失的问题。先贴出解决方案,详细代码,过几天有时间了整理出来再贴。 |
回答:
第一个问题 保存用户购物车数据 ECSHOP的购物车数据,是以Session 方式存储在数据库里,并在Session结束后 ,Distroy 掉,解决方法是: 1.购物车内容读取方式. 更改登陆后购物车获取条件 "Session 单独方式"为 Session +用户名,该修改位于Lib_order 下 function get_cart_goods(); 2. 购物车内容记录方式,未登陆方式依然是Session , 用户登陆后,自动UPdate Cart 一次, 将同一UserID下购物车内数据不是当前Session的Update到当前Session , 并将当前Session 下UserID为0的部分(未登陆情况下,Userid是0),UpdateID到当前UserID ,该修改位于 Flow.php 下面function flow_update_cart($arr) 3.更改退出时,自动Clear Cart的部分,将Distroy 当前Session 的内容,更改为Distroy 当前Session 下 User ID为0的部分。 该修改位于:Includes/cls_session.php ,function destroy_session() 部分 说明:这种情况下就是游客关闭浏览器后,购物车清空, 注册用户购物车永久保存, 可能会对服务器造成轻微压力,主要取决于用户的数量, 如果数量较多数据服务器压力较大,可以通过程序,自动清理超过一定时间段未登陆的User Cart (或者是额外增加一个数据,来标示加入购物车的时间,根据此时间判断是否自 动清理). |
此贴必火! 广告出租! |
此贴很火~~~ 留名 |
谢谢分享。 |
赶紧占个位置 |
占个位置 |
占位学习ing |
路过,只能看看。对于新手,是没任何用处了。对于高手,这些又不需要。 |
2. 购物车内容记录方式,未登陆方式依然是Session , 用户登陆后,自动UPdate Cart 一次, 将同一UserID下购物车内数据不是当前Session的Update到当前Session , 并将当前Session 下UserID为0的部分(未登陆情况下,Userid是0),UpdateID到当前UserID ,该修改位于 Flow.php 下面function flow_update_cart($arr) function flow_update_cart($arr) { foreach ($arr AS $key => $val) { $val = intval(make_semiangle($val)); if ($val <= 0) { continue; } $sql = "SELECT `rec_id`, `goods_id`, `goods_attr_id`, `extension_code` FROM" .$GLOBALS['ecs']->table('cart'). " WHERE rec_id='$key' AND (session_id='" . SESS_ID . "' OR user_id='".$_SESSION['user_id']."')"; $goods = $GLOBALS['db']->getRow($sql); // 更新购物车Session & user id $sql ="UPDATE " .$GLOBALS['ecs']->table('cart')." SET session_id='" . SESS_ID . "',user_id='".$_SESSION['user_id']."' where rec_id='".$goods['rec_id']."'"; $g = $GLOBALS['db']->query($sql); $sql = "SELECT g.goods_name, g.goods_number ". "FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ". $GLOBALS['ecs']->table('cart'). " AS c ". "WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'"; ...........................后面不变 |
在用户登陆后,Flow.php打开购物车地方,需要调用一次自动更新购物车, 在 /* 取得商品列表,计算合计 */ $cart_goods = get_cart_goods(); 之后增加如下代码 for($i=0; $i<count($cart_goods['goods_list']);$i++){ $a[$cart_goods['goods_list'][$i]['rec_id']]=$cart_goods['goods_list'][0]['goods_number'];} if(count($a)>0){flow_update_cart($a);} |
第三项自己琢磨吧,懒得去翻那代码了,改掉SQL语句中session_id部分为user_id就行了 这里发帖真麻烦地说,两套验证... |
谢谢共享, 发帖量超过10好像就没有验证了, |
最近更新
常用插件
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
ecshop热门问答
ecshop热门资料
ecshop架构
ecshop薇薇儿
ecshop分类模板
ecshop是不是
ecshoponce
ecshop滚动代码
ecshop倒记时
ecshop江湖
ecshopmember
ecshop简约数码商城
ecshopBBS
ecshop营销
ecshop免运费
ecshop分成设置
ecshopthrown
ecshop预付款
ecshopShanghai
ecshop品牌展示
ecshop监控订单
收货地址
ecshop分类导出
ecshop商品修改
统计功能
ecshop毛病
ecshop新品排列顺序问题
ecshopQQ彩贝联合登录
ecshop思路
ecshop标题栏
ecshop171
ecshop火车头