ecshop二次开发中购物车修改的常见问题
来源:互联网 发布:雪梨淘宝店收入 编辑:程序博客网 时间:2024/05/29 20:01
由于客户的不同要求,在ecshop二次开发中需要对购物车的功能进行修改,为了方便大家,我在这里把ecshop二次开发中购物车修改的常见问题总结出来,希望能帮助大家解
决心中的疑问。
1.ecshop二次开发中保存注册用户购物车数据解决方法:ecshop购物车是数据库中cart表来支持的,在ecshop表中rec_id是编号,user_id是注册
用户的id,session_id表示session会话id,如果关闭浏览器,那么session_id将会自动注销。所以我们可以更改登陆后购物车获取条件 "Session 单独方式"为 Session +用户名,
该修改位于Lib_order下function get_cart_goods();当然未登陆方式是Session , 用户登陆后UPdate Cart会自动更新一次,将同一个UserID下购物车内数据不是当前的
Session的Update到当前的Session , 并将当前的Session 下的UserID中0的部分UpdateID到当前UserID ,该修改位于 Flow.php 下面
function flow_update_cart($arr)
更改退出时,自动Clear Cart将Distroy 当前Session 的内容,更改为Distroy 当前Session 下 User ID为0的部分,该修改位于:Includes/cls_session.php , functiondestroy_session() 部分。
以上代码实现的是:游客关闭浏览器后,注册用户购物车永久保存,未注册的用户购物车清空,这样也会减轻对服务器的压力,当然这还是要看用户的数量,数量多数据服务
器压力大,程序会自动清理超过一定时间段未登陆的User Cart (或者是额外增加一个数据,来标示加入购物车的时间,根据此时间判断是否自动清理)。
2.接下来我们来看看ecshop二次开发之如何保留所有登陆者购物车中的产品。
我们首先要修改destroy_session()函数,此函数在includes/cls_session.php中。
$this->db->query('DELETE FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE
session_id = '$this->session_id' and user_id =''");
然后修改在lib_mian.php文件中的update_user_info()函数:
$sql = "update ".$GLOBALS['ecs']->table('cart')." set user_id =".$_SESSION
['user_id']." where session_id = '".SESS_ID."'";
$GLOBALS['db'] -> query($sql);
$sql1 = "update ".$GLOBALS['ecs']->table('cart')." set session_id
='".SESS_ID."' where user_id = '".$_SESSION['user_id']."'";
$GLOBALS['db'] -> query($sql1);
$re = $GLOBALS['db'] -> getAll("select *,sum(goods_number) as
goods_number from ".$GLOBALS['ecs']->table('cart')." where user_id =
'{$_SESSION['user_id']}' and session_id = '".SESS_ID."' group by goods_id");
if($re){
foreach ($re as $k => $v){
$sql = "update ".$GLOBALS['ecs']->table('cart'). " set goods_number =
".$v['goods_number']." where rec_id = ".$v['rec_id'];
$GLOBALS['db'] -> query($sql);
$sql = "delete from ".$GLOBALS['ecs']->table('cart')." where rec_id <>
{$v['rec_id']} and user_id = '{$_SESSION['user_id']}' and session_id =
'".SESS_ID."' and goods_id = ".$v['goods_id'];
$GLOBALS['db'] -> query($sql);
}
}
这样就解决了ecshop二次开发中的另一个难题了。
3.下面给大家介绍ecshop二次开发中购物车显示商品品牌:在includes/lib_order.php 中找到 cart_goods() 函数(约873行)里:
$arr[$key]['formated_subtotal'] = price_format($value['subtotal'], false);
在这段代码下面加上一段程序(如下所示):
$sql="select brand_name from ".$GLOBALS['ecs']->table('goods')." g left join
" . $GLOBALS['ecs']->table("brand") . " b on g.brand_id=b.brand_id where
goods_id='{$value['goods_id']}'";
$goods_brand = $GLOBALS['db']->getOne($sql);
$arr[$key]['goods_brand']=$goods_brand;
在get_cart_goods() 函数(约1603行)中找到$goods_list[] = $row; 在这段代码的上方加上一段代码如下所示:
$sql="select brand_name from ".$GLOBALS['ecs']->table('goods')." g left join
" . $GLOBALS['ecs']->table("brand") . " b on g.brand_id=b.brand_id where
goods_id='{$row['goods_id']}'";
$goods_brand = $GLOBALS['db']->getOne($sql);
$row['goods_brand']=$goods_brand;
接下来我们需要修改一下flow.dwt模板文件,找到
<!-- {if $goods.is_shipping} -->(<span style="color:#FF0000">
{$lang.free_goods}</span>)<!-- {/if} -->
在这段代码的后面加上:
{$goods.goods_brand},
然后我们还要找到
<a href="goods.php?id={$goods.goods_id}" target="_blank"><img
src="{$goods.goods_thumb}" border="0" title="{$goods.goods_name|escape:html}"
/></a><br />
在它后面增加代码
品牌:{$goods.goods_brand}
- ecshop二次开发中购物车修改的常见问题
- ecshop二次开发之购物车常见问题
- ecshop二次开发之 修改ecshop购物车退出后保留购物车购买的商品
- ecshop中truncate后缀的修改(ecshop二次开发)
- ecshop二次开发指南-----购物车篇
- ecshop二次开发的一些修改集锦{转}
- ECSHOP购物车收货人信息修改
- ecshop二次开发100个修改
- ecshop二次开发100个修改
- ecshop 购物车为空,您的购物车中没有商品!解决办法
- ecshop中truncate的修改
- ecshop修改商品数量后自动更新购物车
- ecshop购物车原理
- ecshop购物车原理
- Ecshop购物车原理
- ECSHOP二次开发中关于文档后台菜单的功能说明
- ecshop的二次开发-----js轮播图
- ECSHOP如何解决购物车中商品自动消失问题 session 失效 丢失的问题
- 系统单据编号的几种实现方法
- Qt函数
- 红尘依梦
- Win 2003域服务器远程桌面管理窍门
- StarField模拟星空
- ecshop二次开发中购物车修改的常见问题
- Windows 7操作系统“最高权限”揭秘
- 流年,经不起怀念
- Linux下通过命令设置系统时间
- Flowportal.Net BPM 获取用户信息表SQL
- 关于C++对函数传参与函数返回值进行引用传递的详解
- Windows 安装Apache2.2和Mongrel运行Ruby on Rails
- ECSHOP支持用手机号码登录、邮箱登录、Email登录
- Lombok — Java代码自动生成 开发利器