ecshop教程ajax更新购物车数量
ECShop功能介绍
指导老师:黄华毕业学校:清远职业技术学院ECShop简介是Comsenz公司推出的一款B2C独立网店系统,现已出售给ShopEX的开发商上海商派网络科技有限公司。
适合企业及个人快速构建个性化网上商店。
系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。
ECShop悉心听取每一位商家的需求与建议,不仅设计了人性化的网店管理系统帮助商家快速上手,还根据中国人的购物习惯改进了购物流程,实现更好的用户购物体验。
经过近两年的发展,ECShop网店系统无论在产品功能、稳定性、执行效率、负载能力、安全性和SEO支持(搜索引擎优化)等方面都居国内同类产品领先地位,成为国内最流行的购物系统之一。
ECShop功能介绍1. 灵活的模版机制ECShop开发了独有的高效模板引擎(2.15以前版本使用smarty模板引擎),并结合了Dreamweaver的模板和库功能,使得编辑制作模板变得更简单。
2. 开放的插件机制支付、配送,会员整合都是以插件形式实现。
商家可以随时增加或变更的支付方式和配送体系。
ecshop支持大部分php开发的论坛系统,包括discuz,phpwind 等,只需在后台做简单参数配置,即可完成会员整合。
3. 功能 AJAX 化ECSHOP 使用目前流行的 AJAX 技术,批量数据编辑变得更迅速,方便。
4. 促销功能ECSHOP提供了积分、红包、赠品,夺宝奇兵等多种促销方法。
5. 高效率的代码和执行性能通过优化代码与数据库结构,配合ecshop独家设计的缓存机制,在不考虑网速的情况下,网店动态页面与纯静态页面访问速度相当。
6. 常规功能的更完善实现针对常规功能尤其是后台管理和购物流程,ECShop进行了更简洁的设计,实现更好的用户体验。
7. 搜索引擎优化在 SEO (搜索引擎优化)上,ECShop独家支持两种 URL 重写方式,并且是同类软件中第一家支持 google/ yahoo / microsoft 三家共同发布的 sitemaps 0.9 网站索引规范,能够为站点被搜索引擎收录做到最大限度的支持和帮助。
ecshop购买数量加减控制修改优化
ecshop购买数量加减控制修改优化
ecshop商品采购页里的采购数量默许是个文本框,假如需求采购的数量不是1件的话需求先在数量的文本框内填上所需求的件数,再点击参加购物车。
从用户体会的视点这不是太好,由于用户阅读网站时大多时分都运用鼠标,从细节的用户体会来思考,最佳不要让用户频频的在鼠标和键盘中切换操作。
而假如按默许ecshop模板及大多数开发的模板来看,都延用了ecshop自身的程序没有进行太多修正和优化。
从调查大型电商网站能够发现,一般它们运用的是在文本框邻近放置两个按钮,经过鼠标点击按钮来进行数量的增减。
本期咱们将来修正这个细节。
以买油画为例,点开一个商品页:,在采购数量的文本框里前后各有一个加减按钮,我是怎么做到的呢?放出代码:在商品详情页模板或详细购物框的库文件中,将代码:{$lang.number}{$lang.colon}
修正成{$lang.number}{$lang.colon}1){document.getElementById(“nu mber”).value–;}’ src=””>
onclick=’document.getElementById(“number”).value++;’src=””>我们能够对比增加的代码,应用到自个的模板上,然后自行调理css即可。
一起能够发现,那两个加减按钮其实是一个gif 图像。
完结这个修正后,采购体会比原先好了许多。
ecshop详情页和购物车购买数量前后添加加减
ecshop详情页和购物车购买数量前后添加加减ECSHOP开发中心()给数量框两侧添加“+”“-”按钮。
1、修改/js/common.js,在最后添加以下代码:/*** 购物车加减按钮* @param txt_id 数量的ID* @param type 加+ 减-* @param num 添加或者减少的数量默认为一*/function cart_number(txt_id, type, num){num = num || 1;var txt = document.getElementById(txt_id);var source_num = parseInt(txt.value);if (source_num == 1 && type == '-'){alert('请最少购买一个商品');return;}var to_num = source_num;if (type == '+'){to_num += num;}else if (type == '-'){to_num -= num;}txt.value = to_num;showdiv(txt);}复制代码2、修改模版文件夹下flow.dwt,添加以下代码:搜索goods_number 的input, 在input 两侧添加以下代码,其中“+”“-”也可以换成加号和减号的图片:<a href="javascript:cart_number('goods_number_{$goods.rec_id}', '-');">-</a><a href="javascript:cart_number('goods_number_{$goods.rec_id}', '+');">+</a>复制代码说明:这个修改方法是用在购物车页面,不过有个缺点是,它不是基于ajax,所以修改数量后要点“更新购物车”才可以。
Ecshop二次开发
Ecshop二次开发,增加用户订单编辑功能/post/74.htmlEcshop是一款开源免费的网上商店系统。
功能很强大,但是也有很多的不足,不过幸好该系统是开源的,可以自己修改扩展进行ecshop二次开发。
呵呵,下面就介绍一下怎么我扩展用户的订单编辑功能。
第一步:准备模版文件。
修改模板文件中的user_transaction.dwt。
在文件中增加一段用户显示用户编辑订单的界面模版,其实该模版可以从该文件中的详细订单显示界面模板修改过来,只要截取商品列表和费用总计部分就好!1、搜索”<!– {if $allow_to_cart} –>”,在该代码的前面加入:<!– {if $allow_to_modify} –><a href="user.php?act=modify&order_id={$order.order_id}">编辑订单</a><!– {/if} –>2、搜索“<!– #BeginLibraryItem "/library/help.lbi" –>”,在其之前加入:<!–修改订单–><!–{if $action eq "modify"} –>{insert_scripts files=‟transport.js‟}<div class="titles">修改订单</div><div class="listbox"><form action="user.php" name="list" method="post"><table width="100%" id="orderlist2"><tr><th>{$lang.goods_name}</th><th>{$lang.goods_attr}</th><th align="right">{$lang.goods_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –></th><th width="60px;" style="text-align:center">{$lang.number}</th><th width="60px;" class="rightborder">{$lang.subtotal}</th><th width="60px;" class="rightborder">操作</th></tr><!– {foreach from=$goods_list item=goods} –><tr><td><a href="goods.php?id={$goods.goods_id}" target="_blank">{$goods.goods_name}</a><!– {if $goods.parent_id > 0} –><span style="color:#FF0000">({$lang.accessories})</span><!– {elseif $goods.is_gift} –><span style="color:#FF0000">({$rgess})</span><!– {/if} –></td><td>{$goods.goods_attr|nl2br}</td><!–<td>{$goods.market_price}</td>–><td >{$goods.goods_price}</td><td ><input type=text name=good_number[{$goods.goods_id}] size=5 value="{$goods.goods_number}" style="text-align:center"></td><td class="rightborder">{$goods.subtotal}</td><td style="text-align:center;line-height:150%"><a href="javascript:if (confirm(‟你确定要删除该商品吗?‟)) location.href=‟user.php?act=modify&do=del&oid={$order.order_id}&bid={$goods.goods_id}‟; ">{$lang.drop}</a></td></tr><!– {/foreach} –><tr><td colspan="8" style="border-top:1px dotted #DADADA;text-align:right;">{$lang.shopping_money}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}</td></tr></table><table width="716" border="0" cellspacing="0" cellpadding="0"><tr><td width="300" height="50" align="center" valign="bottom"><input type="image" src="images/edit_button.gif" width="100" height="40" border="0" /></td><td width="416"> </td></tr></table><input type="hidden" name="do" value="update"><input type="hidden" name="act" value="modify"><input type="hidden" name="oid" value="{$order.order_id}"></form></div><div class="titles">费用总计</div><div class="listbox"><table width="100%" border="0" align="center" cellpadding="4" cellspacing="2"><tr><td align="right">{$lang.goods_all_price}<!–{if $order.extension_code eq "group_buy"} –>{$lang.gb_deposit}<!– {/if} –>: {$order.formated_goods_amount}<!– {if $order.discount gt 0} 折扣–>- {$lang.discount}: {$order.formated_discount}<!– {/if} –><!– {if $order.tax gt 0} –>+ {$lang.tax}: {$order.formated_tax}<!– {/if} –><!– {if $order.shipping_fee > 0} –>+ {$lang.shipping_fee}: {$order.formated_shipping_fee}<!– {/if} –><!– {if $order.insure_fee > 0} –>+ {$lang.insure_fee}: {$order.formated_insure_fee}<!– {/if} –><!– {if $order.pay_fee > 0} –>+ {$lang.pay_fee}: {$order.formated_pay_fee}<!– {/if} –><!– {if $order.pack_fee > 0} –>+ {$lang.pack_fee}: {$order.formated_pack_fee}<!– {/if} –><!– {if $order.card_fee > 0} –>+ {$lang.card_fee}: {$order.formated_card_fee}<!– {/if} –></td></tr><tr><td align="right"><!– {if $order.money_paid > 0} –>- {$lang.order_money_paid}: {$order.formated_money_paid}<!– {/if} –><!– {if $order.surplus > 0} –>- {$e_surplus}: {$order.formated_surplus}<!– {/if} –><!– {if $order.integral_money > 0} –>- {$e_integral}: {$order.formated_integral_money}<!– {/if} –><!– {if $order.bonus > 0} –>- {$e_bonus}: {$order.formated_bonus}<!– {/if} –></td></tr><tr><td align="right" style="border-top: 1px dotted #DADADA">{$lang.order_amount}: {$order.formated_order_amount}<!–{if $order.extension_code eq "group_buy"} –><br />{$lang.notice_gb_order_amount}<!– {/if} –></td></tr><!– {if $allow_edit_surplus} 如果可以编辑使用余额数–><tr><td align="right" style="border-top: 1px dotted #DADADA"><form action="user.php" method="post" name="formFee" id="formFee">{$e_more_surplus}:<input name="surplus" type="text" size="8" value="0" />{$max_surplus}<input type="submit" name="Submit" value="{$lang.button_submit}" /><input type="hidden" name="act" value="act_edit_surplus" /><input type="hidden" name="order_id" value="{$smarty.get.order_id}" /> </form></td></tr>{/if}</table></div><!–{/if}–><!–#修改订单–>第二步、编辑user.php文件1、在$ui_arr 中加入"modify“.* 显示页面的action列表*/$ui_arr = array(‟register‟, …login‟, …profile‟, …order_list‟, …modify…,‟order_detail‟, …address_list‟, …collection_list‟,'message_list‟, …tag_list‟, …get_password‟, …reset_password‟, …booking_list‟, …add_booking‟, …account_raply‟,'account_deposit‟, …account_log‟, …account_detail‟, …act_account‟, …pay‟, …default‟, …bonus‟, …group_buy‟, …group_buy_detail‟, …affiliate‟, …comment_list‟,'validate_email‟,'track_packages‟, …transform_points‟);2、在下面所示代码中,增加$smarty->assign(‟allow_to_modify‟,1);/* 未发货,未付款时允许更换支付方式和修改订单*/if ($order['order_amount'] > 0 && $order['pay_status'] == PS_UNPAYED && $order['shipping_status'] == SS_UNSHIPPED){$payment_list = available_payment_list(false, 0, true);$smarty->assign(‟allow_to_modify‟,1);3、在“//删除订单中的商品”的方面,加入下载代码:/*修改订单*/elseif($action==‟modify‟){function multiArraySearch($needle, $haystack){$value = false;$x = 0;foreach($haystack as $temp){// print_r($temp);$search = array_search($needle, $temp);if (strlen($search) > 0 && $search >= 0){$value[0] = $x;//$value[1] = $search;}$x++;}return $value;}include_once(ROOT_PATH . …includes/lib_transaction.php‟);include_once(ROOT_PATH . …includes/lib_payment.php‟);include_once(ROOT_PATH . …includes/lib_order.php‟);include_once(ROOT_PATH . …includes/lib_clips.php‟);if($_REQUEST['do']=="del"){$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql="delete from ".$ecs->table("order_goods")." where goods_id=$gid and order_id=$oid";//删除商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']-$result['goods_price']*$result['goods_number'];$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate= floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']-($result['goods_price']*$result['goods_number'])*$rate;$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$result['goods_number']);//删除的支付费用$pay_fee=$order['pay_fee']-$addpay_fee;$order_amount=$market_price-$discount+$tax+$pay_fee;$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟ ,pay_fee=‟".$pay_fee."‟,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=modify&order_id=".$oid);exit();}if($_REQUEST['do']=="update"){//更新商品数量$oid=$_REQUEST['oid'];$gid=$_REQUEST['bid'];$nums=$_REQUEST['good_number'];foreach($nums as $gid=>$num){$sql="select goods_price,goods_number from ".$ecs->table("order_goods")." where goods_id=$gid";$result=$db->getrow($sql);$order = get_order_detail($oid, $user_id);//取得订单$sql_storage = "SELECT goods_name,goods_number FROM " .$ecs->table(‟goods‟). " WHERE goods_id = $gid";$storage_num = $db->getRow($sql_storage);//库存if($result['goods_number']==$num){continue;}elseif($num<=0){show_message("对不起,您修改的商品数量不能为0,或小于0!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}elseif ($num>$storage_num['goods_number']){show_message("对不起,您修改的商品数量不能大于该商品:".$storage_num['goods_name'].",库存数:".$storage_num['goods_number']."!", "返回", …user.php?act=modify&order_id=‟.$oid, …error‟);exit();}$addnum=$num-$result['goods_number'];$sql="update ".$ecs->table("order_goods")." set goods_number=".$num." where goods_id=$gid and order_id=$oid";//添加商品$db->query($sql);$sql="select configure from ".$ecs->table("shipping_area")." where shipping_id=".$order['shipping_id'];$shipping_fee=$db->getrow($sql);$tempa=unserialize($shipping_fee['configure']);$shipping=multiArraySearch("free_money",$tempa);$free_money=$tempa[$shipping[0]]['value'];//找出免运费的额度$market_price=$order['goods_amount']+$result['goods_price']*$addnum; //修改后商品总价格$inv_id=array_search($order['inv_type'],$GLOBALS['_CFG']['invoice_type']['type']);$rate=floatval($GLOBALS['_CFG']['invoice_type']['rate'][$inv_id])/100;$tax=$order['tax']+($result['goods_price']*$addnum)*$rate;//修改后税额$addpay_fee=pay_fee($order['pay_id'],$result['goods_price']*$addnum- $school_dis);//支付费用$pay_fee=$order['pay_fee']+$addpay_fee;$order_amount=$order['order_amount']+($result['goods_price']*$addnum)-$school_dis+($result[' goods_price']*$addnum)*$rate+$addpay_fee;//修改后订单总额$shipping_fee=$order['shipping_fee'];if($market_price>=$free_money){$order_amount=$order_amount-$shipping_fee;$shipping_fee="0.00";}else{if($shipping_fee<=0){$shipping=multiArraySearch("basic_fee",$tempa);$shipping_fee=$tempa[$shipping[0]]['value'];//找出基本运费的$order_amount=$order_amount+$shipping_fee;}}//更新订单信息$sql="update ".$ecs->table("order_info")." set goods_amount=‟".$market_price."‟,discount=‟".$discount."‟,shipping_fee=‟".$shipping_fee."‟,tax=‟".$tax."‟,pay_fee=‟".$pay_fee."‟ ,order_amount=‟".$order_amount."‟ where order_id=$oid";$db->query($sql);}$order = get_order_detail($oid, $user_id);//再一次查检订单参数if($order['goods_amount']<=0){$sql="delete from ".$ecs->table("order_info")." where order_id=$oid";$db->query($sql);ecs_header("Location: user.php?act=order_list");exit();}ecs_header("Location: user.php?act=order_detail&order_id=".$oid);exit();}$order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0;$order = get_order_detail($order_id, $user_id);/* 订单商品*/$goods_list = order_goods($order_id);foreach ($goods_list AS $key => $value){$goods_list[$key]['market_price'] = price_format($value['market_price'], false);$goods_list[$key]['goods_price'] = price_format($value['goods_price'], false);$goods_list[$key]['subtotal'] = price_format($value['subtotal'], false);}$smarty->assign(‟order‟, $order);$smarty->assign(‟goods_list‟, $goods_list);$smarty->display(‟user_transaction.dwt‟);}。
Ecshop使用说明流程图
Ecshop 使用说明流程图及分析一、功能模块概述电子商务商品管理订单管理会员管理管理员管理文章管理系统设置商品列表添加商品商品分类商品品牌商品回收站订单列表订单查询订单状态变更删除订单会员列表添加新会员会员等级会员评论资金管理管理员列表管理员权限文章分类文章列表商店设置配送方式地区列表友情链接验证码管理自定义导航栏商品类型二、商品管理2.1商品列表通过查询数据库中的商品信息,将相关信息显示在页面上,并提供相应操作连接。
添加编辑复制 放入回收站搜索查看2.1.1商品列表所含功能说明商品列表商品列表添加商品商品编辑商品复制商品回收站商品查询2.1.2商品列表流程商品列表查询未放入回收站的商品信息输出数组至页面根据页面布局输出商品列表组合SQL语句,查询未放入回收站的商品获取返回的数组,传递到模版按规则显示数据简述:本功能主要实现显示出商品信息的功能,通过点击商品列表的链接,使用PHP查询没有放入回收站的商品信息,将返回值存储到数组中,通过模版引擎将数组传送到视图,利用模版引擎的格式输出查询到的数据。
2.1.3添加商品流程添加商品填写商品信息提交至处理页面保存到数据库并跳转至列表页添加商品填写表单信息提交到处理页面接收数据并存储到数组中组合插入数据的SQL语句将数据存储到相应的数据表中跳转到商品列表页面简述:本功能主要描述添加一件商品的过程。
点击添加商品按钮,调出需要填写的表单,表单填写完成后,通过提交,将数据提交到处理页面,由处理页面负责设置数组接收提交的数据,组合成插入的SQL语句,将数据写入到数据库表中,确认添加完成后跳转到商品列表页面,完成数据插入。
2.1.4商品编辑编辑商品修改商品信息提交至处理页面保存到数据库并跳转至列表页编辑商品修改表单信息提交到处理页面接收数据并存储到数组中组合更新数据的SQL语句将数据存储到相应的数据表中跳转到商品列表页面获取指定的商品信息获取商品ID根据商品ID查询出需要修改的商品信息按照规定的表单位置显示商品信息简述:本功能主要描述修改一件商品信息的过程。
Java-Web应用开发:修改和清空购物车
4.3 修改和清空购物车1 目标在商品数量文本框内输入一个新的数量,点击“修改数量”,购物车刷新,按照新数量重新计算总金额。
如果用户输入“0”,修改数量之后,该条目从购物车中删除。
(程序未做JS有效值判断,所以请勿输入不合法的数量值)。
点击“清空购物车”,将购物车从session里删除。
2 思路(1) 购物车页面的表格是购物车对象cart的展示结果,表格中的每一行就是购物车cart中的一个元素,两者的内容和顺序是完全一样的。
(2) 购物车页面的表格是放在form表单里的,用户在文本框中修改数量后,点击“修改数量”超链接激发表单的提交,表单提交时,所有的数量文本框中的值都会被提交。
(3) 表单提交给CartEditServlet处理,该servlet取出每个商品数量文本框中的新值,将购物车里对应的商品数量修改为此新值(表格里的第一行商品对应的就是购物车里的第一件商品,第二行对应第二件,以此类推)。
如果某行的数量修改为0,这行对应的购物车商品就从购物车里移除。
(4) 数量文本框的命名规则为num+i,即第一件商品数量框名为num0,第二件为num1,第三件为num2。
这样在遍历购物车时,通过循环变量,就能拼接出当前商品的数量文本框名称,从而获得当前商品的新数量。
(5) 购物车商品数量修改完毕后,forward回查看购物车页面showCart.jsp,展示修改后的结果。
(6) 清空购物车,将购物车对象从session中移除或者把购物车对象clear。
3 步骤3.1 创建CartEditServlet类在cn.estore.servlet.cart包中,创建CartEditServlet类,该servlet处理购物车的修改和清空,由请求参数action的值区分用户动作,请求提交给此servlet的时候必须提供?action=**参数,如果action=clear表示清空,action=modify表示修改数量。
济南网站制作,ecshop后台ajax无刷新修改商品数量原理分析
济南网站制作中,做商城ecshop系统一个不错的选择,他的功能和成熟的系统模式,使得许多济南网站建设公司越来越对ecshop有更多的信赖,其中ecshop中的ajax效果做的非常好,可以直接在后台的列表界面就能修改商品数量,库存数量,商品名称等,无需点击编辑重新提交表单,使得用户体验做的非常好,简介方便。
济南腾飞网络这篇文章讲解一下,ecshop后台ajax无刷新修改商品数量的原理是什么,怎么实现的。
一、演示效果图:二、无刷新修改商品数量实现方法:我们通过上图可以看到这里执行了一个onclick事件,通过点击触发listTable函数的edit方法,下面我们看下这个函数是怎么写的。
/*** 创建一个可编辑区*/listTable.edit = function(obj, act, id){var tag = obj.firstChild.tagName;if (typeof(tag) != "undefined" && tag.toLowerCase() == "input") {return;}/* 保存原始的内容*/var org = obj.innerHTML;var val = Browser.isIE ? obj.innerText : obj.textContent;/* 创建一个输入框*/var txt = document.createElement("INPUT");txt.value = (val == 'N/A') ? '' : val;txt.style.width = (obj.offsetWidth + 12) + "px" ;/* 隐藏对象中的内容,并将输入框加入到对象中*/obj.innerHTML = "";obj.appendChild(txt);txt.focus();/* 编辑区输入事件处理函数*/txt.onkeypress = function(e){var evt = Utils.fixEvent(e);var obj = Utils.srcElement(e);if (evt.keyCode == 13){obj.blur();return false;}if (evt.keyCode == 27){obj.parentNode.innerHTML = org;}}/* 编辑区失去焦点的处理函数*/txt.onblur = function(e){if (Utils.trim(txt.value).length > 0){res = Ajax.call(listTable.url, "act="+act+"&val=" + encodeURIComponent(Utils.trim(txt.value)) +"&id=" +id, null, "POST", "JSON", false);if (res.message){alert(res.message);}if(res.id && (res.act == 'goods_auto' || res.act == 'article_auto')){document.getElementById('del'+res.id).innerHTML = "<a href=\""+ thisfile +"?goods_id="+ res.id +"&act=del\" onclick=\"return confirm('"+deleteck+"');\">"+deleteid+"</a>";}obj.innerHTML = (res.error == 0) ? res.content : org;}else{obj.innerHTML = org;}}}通过我们观察这个函数的写法,得出这个函数的意思,创建一个可编辑区域,然后在鼠标失去焦点的时候执行Ajax.call这个函数。
ecshop二次开发,常用功能开发
ecshop二次开发,常用功能开发ecshop二次开发,常用功能开发1、ECSHOP 搜索智能提示(即联想功能)2、购物车动态更新,数量左右有+ - 点击即可实时改变价格,购买商品“加入购物车”,弹出特效窗口,购物车属性,加减号3、信任登陆:QQ、新浪微博、淘宝/支付宝等合作登录功能插件含后台设置功能(可选)4、ecshop自定义URL/链接,支持无限级目录,对提高SEO排名很有帮助、/thread-__-1-1.html5、Ecshop自动生成购买记录和评论插件6、物流跟综7、资讯站自动内链功能,在后台设置关键词,资讯站相关关键词可点到商品或分类8、简化购物流程购物流程整合成单页面运费无刷新变化所有操作在单页面完成,简化了购物流程,提高成交,将购物车、填写收货地址、物流方式和支付方式集成在一个页面上完成,9、ecshop 网站商品图片分步加载,(图片太多,加载会很慢,页面在第一屏就加载第一屏,拖动后自动加载),类似于京东,趣玩网的图片预加载..ecshop二次开发,常用功能开发。
ecshop二次开发,常用功能开发10、ECSHOP CPS 广告联盟插件,11、促销期内,每个用户最多只允许购买N 件。
不论你是昨天买的,还是今天买的,还是明天买的,也不论你下多少订单,只要是在促销期内,购买数量加在一起不能超过N 件。
这个数字N 可以在后台设置。
例如对商品A做促销活动,规定在2022年-01-01 至2022年-02-01 期间,每个用户最多只能购买2件,在这个时间段之前或在这个时间段之后购买的话,不做任何限制。
12、限时抢购(限时抢拍)、团购(两种方式:普通团购、满多少团购价减多少)、秒杀、买就送、倒计时功能13、ECSHOP优惠套餐插件,仿趣玩网,支持多套餐,支持勾选ecshop二次开发,常用功能开发14、实现用户名或Email都能登陆15、未注册等提示性跳转,以浮动层表现15、其它,如浮动返回到顶部、浮动客服等ecshop二次开发,常用功能开发怎样把ECSHOP商城系统中的相对地址变成带域名的绝对地址?答:我们一般所说的绝对地址(也有朋友称其为:完整地址)是页前台查看源文件时,在源文件中都所能看到的带域名的完整URL形式,比如:“a href=“/sitemap.xml "__/a”修改说明:这样修改的好处:也许很多朋友都非常想把以mon.php这个文件把return $uri;修改为return 'http:// /'.$uri;为什么我的ECSHOP首页和商品列表页中的商品缩略图很模糊,我应该怎么做,图片才会清晰呢?答:经常看到论坛里有人反映说首页或列表页的缩略图的质量不高,比较模糊......原因是因为ECSHOP生成缩略图时,用到的函数imagejpeg() 没有设置质量参数。
ECshop使用手册
ECshop使用手册ECshop使用手册1、简介1.1 什么是ECshop1.2 ECshop的特点1.3 ECshop的优势2、安装与配置2.1 系统要求2.2 与安装ECshop2.3 配置ECshop2.4 数据库设置2.5 后台管理设置3、商品管理3.1 添加商品3.2 编辑商品3.3 删除商品3.4 商品分类管理3.5 商品属性管理4、订单管理4.1 创建订单4.2 订单支付4.3 订单发货4.4 查看订单详情 4.5 取消订单4.6 退款与售后服务5、用户管理5.1 用户注册5.2 用户登录5.3 修改个人信息 5.4 查看订单历史 5.5 购物车管理5.6 用户评论与评分6、促销与营销6.1 优惠券6.2 积分系统6.3 团购与拼团活动7、物流与配送7.1 物流公司管理7.2 配送区域设置7.3 发货流程8、网站设置8.1 网站基本信息设置 8.3 导航菜单管理8.4 页面布局管理8.5 插件与扩展管理9、数据备份与恢复9.1 数据库备份9.2 数据库恢复10、系统日志与错误处理 10.1 系统日志查看10.2 错误处理与调试11、常见问题与解答11.1 如何处理商品缺货情况?11.2 如何配置多个支付方式?11.3 如何添加新的配送方式?附件:- ECshop安装包- ECshop使用手册PDF版法律名词及注释:- 商标:商标是指为区别商品或者服务来源,以图形、字词、数字、三维标志、颜色组合等方式,以及联合声音等方式,单独或者结合使用,能够区别商品或者服务来源并能够在法律上受到保护的标志。
- 版权:版权是指作者对其创作的文学、艺术、科学等作品享有的权利,包括对作品的复制权、发行权、表演权、放映权、广播权、信息网络传播权等权利。
ecshop商城后台使用教程
我们在使用ecshop商城后台时,总会遇到很多的设置问题,比如首页轮播图设置,广告位设置,商家权限设置等等问题,本篇文章总结了商城后台各种使用设置问题及解决方法,希望对大家有所帮助!1:如何管理首页flash播放器回答:后台->flash播放器管理->增加自定义,你就可以上传和控制图片的位置2:如何修改首页"精品推荐"栏目的more小图片回答:模板文件中library/recommend_best.lbi中中more.gif图片换成你要的图片,或者将图片换成你需要的文字.3:如何修改首页"新品上市"栏目的more小图片回答:模板文件library/recommend_new.lbi中,more.gif修改成你需要的图片或者是换成你需要的文字.4:如何手动修改支付方式排列顺序回答:数据库表中,找到payment表,pay_order字段就是用来控制顺序的,你如果想让A支付方式排在第一,那么你需要修改该字段的值稍微大一些。
5:如何去除ecshop产品详细页产品电击率回答:模板文件中,打开goods.dwt,删除{$lang.goods_click_count}:{$goods.click_count}6:首页模板在哪个文件,头部模板,底部模板个什么文件名称回答:首页模板在为index.dwt,头部模板在library/page_header.lbi,底部文件在library/page_footer.lbi7:网站关闭了注册,如何修改“该网店暂停注册”字样回答:languages\zh_cn\common.php中$_LANG['shop_register_closed']='该网店暂停注册';修改该文字就可以了8:收货人详细信息js弹出框的提示脚本在哪个文件回答:languages\zh_cn\shopping_flow.php[比如$_LANG['flow_js']['country_not_null']='请您选择收货人所在国家!';]9:网站公告代码段在那里回答:index.php文件中,$smarty->assign('shop_notice',$_CFG['shop_notice']);//商店公告代码段控制公告10:网站首页"精品推荐"显示数量在那里设置设置ecshop首页精品的数量.模板管理->设置模板->精品推荐(修改其显示数量)修改下面的10为你需要的数量,这就是精品推荐11:网站首页"新品上市"显示数量在那里设置设置ecshop首页新品的数量.模板管理->设置模板->新品上架(修改其显示数量)修改下面的10为你需要的数量,这就是新品上架12:如何修改产品的库存回答:商品管理->商品列表->选中(库存),编辑就可以了.13:如何修改ecshop表的前缀回答:修改data/config.php下的$prefix="ecs_";将ecs_修改成你需要的前缀.其次,在数据库中,修改表名比如ecs_goods修改为"xxx_goods";14:如何去除首页flash下面的空白区域如何显示商品的品牌,如何显示促销产品,为什么首页flash下面有一片空白的地方,如何去掉?首先.ecshop首页flash下面有两个空白的地方,第一个是用来显示促销产品的,右边是用来显示品牌的。
Ecshop_ajax应用
ecshop ajax应用例:点击购物按钮后立即更新购物车数量方案1、比如我们category.dwt 里有1.<a href='flow.php'><SPAN id='cart_count_all'>{insertname='cart_info'}</SPAN></A>复制代码同时此页面有1.<a onclick="javascript:addToCart_xaphp({$goods.goods_id});"style="cursor: pointer;">添加购物车</a复制代码我们现在需要实现点击按钮后页面不刷新去更新上面购物车数量2、首先我们需要调入系统1.{insert_scripts files='transport.js,utils.js'}复制代码这俩个js文件是有关ajax实现效果的类问题我们大可不去管只需要调入下来我们打开系统的common.js文件进行添加我们自己的添加购物车函数1.function addToCart_xaphp(goodsId, parentId)2.{3.var goods = new Object();4.var spec_arr = new Array();5.var fittings_arr = new Array();6.var number = 1;7.var formBuy = document.forms['ECS_FORMBUY'];8.var quick = 0;9.10.// 检查是否有商品规格11.12.goods.quick = quick;13.goods.spec = spec_arr;14.goods.goods_id = goodsId;15.goods.number = number;16.//goods.guige = guige;17.goods.parent = (typeof(parentId) == "undefined") ? 0 :parseInt(parentId);18.19.Ajax.call('flow.php?step=add_to_cart', 'goods=' +goods.toJSONString(), addToCartResponse_xaphp, 'POST', 'JSON');20.}复制代码解释;a.点击按钮首先执行这个函数获取我们的数据b. Ajax.call('flow.php?step=add_to_cart', 'goods=' +goods.toJSONString(), addToCartResponse_xaphp, 'POST', 'JSON'); 这是局部执行也就是无刷新执行flow.php?step=add_to+cart 同时把数据通过POST提交,有关json具体原理想研究的朋友可以去网上找资料。
ECShop限制购买数量插件
ECSHOP限制购买数量插件做过商城,或者说经营过商城的都会知道,有很多商品利润很小,而且还要包运费什么的,所以根本就是做亏本的生意,如果利润小,数量多的话这样就不会出现赔本的损失。
所以今天第一个插件也是很实用的插件就是如果在后台设置商品最小起订量第一步,商品表必须有个字段代表某个商品最小订购数量->min_number 打开goods表在最后字段添加一个min_number tinyint类型默认值为0 代表没有最小起订量sql:alter table `ecs_goods` add column `min_number` tinyint (3) UNSIGNED DEFAULT '0' NOT NULL after `warn_number`;第二部,在后台添加商品的时候必须有个text文本框设置最小起订量admin/goods.php在'warn_number'=> 1 , 代码行后插入'min_number'=> 0,在$warn_number = isset($_POST['warn_number']) ? $_POST['warn_number'] : 0;后添加代码$min_number = isset($_POST['min_number']) ?$_POST['min_number'] : 0;第三部修改添加商品sql语句将/* 入库 */if ($is_insert){if ($code == ''){....由于发帖篇幅的限制省略原有代码无数}else{......}}else{/* 如果有上传图片,删除原来的商品图 */.....}修改代码if ($is_insert){if ($code == ''){$sql = "INSERT INTO " . $ecs->table('goods') . " (goods_name, goods_name_style, goods_sn, " ."cat_id, brand_id, shop_price, market_price, is_promote, promote_price, " ."promote_start_date, promote_end_date, goods_img, goods_thumb, original_img,keywords, goods_brief, " ."seller_note, goods_weight, goods_number,warn_number,min_number, integral,give_integral, is_best, is_new, is_hot, "."is_on_sale, is_alone_sale, goods_desc, add_time, last_update, goods_type,rank_integral)" ."VALUES ('$_POST[goods_name]', '$goods_name_style', '$goods_sn', '$catgory_id', " ."'$brand_id', '$shop_price', '$market_price','$is_promote','$promote_price', "."'$promote_start_date', '$promote_end_date','$goods_img', '$goods_thumb', '$original_img', "."'$_POST[keywords]', '$_POST[goods_brief]','$_POST[seller_note]', '$goods_weight','$goods_number',"."'$warn_number','$min_number','$_POST[integral]', '$give_integral', '$is_best', '$is_new', '$is_hot', '$is_on_sale', '$is_alone_sale', "."'$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type','$rank_integral')";}else{$sql = "INSERT INTO " . $ecs->table('goods') . " (goods_name, goods_name_style, goods_sn, "."cat_id, brand_id, shop_price, market_price, is_promote, promote_price, " ."promote_start_date, promote_end_date, goods_img,goods_thumb, original_img,keywords, goods_brief, " ."seller_note, goods_weight, goods_number, warn_number,min_number,integral,give_integral, is_best, is_new, is_hot, is_real, " ."is_on_sale, is_alone_sale, goods_desc, add_time, last_update, goods_type,extension_code, rank_integral)" ."VALUES ('$_POST[goods_name]', '$goods_name_style','$goods_sn', '$catgory_id', " ."'$brand_id', '$shop_price', '$market_price','$is_promote','$promote_price', "."'$promote_start_date', '$promote_end_date', '$goods_img', '$goods_thumb','$original_img', "."'$_POST[keywords]', '$_POST[goods_brief]','$_POST[seller_note]', '$goods_weight','$goods_number',"." '$warn_number','$min_number', '$_POST[integral]','$give_integral', '$is_best','$is_new', '$is_hot', 0, '$is_on_sale', '$is_alone_sale’' "." '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$code', '$rank_integral')";}}else{$sql = "SELECT goods_thumb, goods_img, original_img " ." FROM " . $ecs->table('goods') ." WHERE goods_id = '$_REQUEST[goods_id]'";$row = $db->getRow($sql);if ($proc_thumb && $goods_img && $row['goods_img'] &&!goods_parse_url($row['goods_img'])){@unlink(ROOT_PATH . $row['goods_img']);@unlink(ROOT_PATH . $row['original_img']);}if ($proc_thumb && $goods_thumb && $row['goods_thumb'] && !goods_parse_url($row['goods_thumb'])){@unlink(ROOT_PATH . $row['goods_thumb']);}$sql = "UPDATE " . $ecs->table('goods') . " SET " ."goods_name = '$_POST[goods_name]', " ."goods_name_style = '$goods_name_style', " ."goods_sn = '$goods_sn', " ."cat_id = '$catgory_id', " ."brand_id = '$brand_id', " ."shop_price = '$shop_price', " ."market_price = '$market_price', " ."is_promote = '$is_promote', " ."promote_price = '$promote_price', " ."promote_start_date = '$promote_start_date', " ."promote_end_date = '$promote_end_date', ";if ($goods_img){$sql .= "goods_img = '$goods_img', original_img = '$original_img', ";}if ($goods_thumb){$sql .= "goods_thumb = '$goods_thumb', ";}if ($code != ''){$sql .= "is_real=0, extension_code='$code', ";}$sql .= "keywords = '$_POST[keywords]', " ."goods_brief = '$_POST[goods_brief]', " ."seller_note = '$_POST[seller_note]', " ."goods_weight = '$goods_weight'," ."goods_number = '$goods_number', " ."warn_number = '$warn_number', " ."min_number = '$min_number', " ."integral = '$_POST[integral]', " ."give_integral = '$give_integral', " ."rank_integral = '$rank_integral', " ."is_best = '$is_best', " ."is_new = '$is_new', " ."is_hot = '$is_hot', " ."is_on_sale = '$is_on_sale', " ."is_alone_sale = '$is_alone_sale', " ."goods_desc = '$_POST[goods_desc]', " ."last_update = '". gmtime() ."', "."goods_type = '$goods_type' " ."WHERE goods_id = '$_REQUEST[goods_id]' LIMIT 1";}第四步修改后台模板文件(在市场价会员价后边添加设置最小起订量)admin/templates/goods_info.htm在 <tr><td class="label">{$b_shop_price}</td><td><input type="text" name="market_price"value="{$goods.shop_price}" size="20" /><input type="button" value="{$lang.integral_market_price}" onclick="integral_market_price()" />{$lang.require_field}</td> </tr>添加<!-- 新增批发数量限制 begin --><tr><td class="label">{$b_min_number}</td><td><input type="text" name="min_number"value="{$goods.min_number}" size="20" /><span class="notice-span" {if$help_open}style="display:block" {else} style="display:none"mce_style="display: none;" {/if}id="minNumber">{$lang.notice_min_number}</span></td></td></tr><!-- 批发数量限制 end -->第五步:修改语言languages/zh_cn/admin/goods.php最后添加$_LANG['lab_min_number'] = '最小购买数量:';$_LANG['notice_min_number'] = '该商品最小购买数量,0表示按购买数量无限制.'到现在位置后台设置全部结束了,不知道大家能懂了没有下面我们说说前台如何来实现我以default模板为例子给大家讲解想做起订量限制,这个必然是在商品购买页面购买数量框来做限制最简单的办法就是用JS当然还有别的办法首先给那些如果给了起订量的商品购买页面直接显示默认最少购买数量如果在后台设置的AA商品最少5个那么进入AA商品页面购买数量默认值就是5我这样来实现修改themes/default/goods.dwt<input name="number" type="text" id="number" value="1" size="4" onBlur="changePrice()" style="border:1px solid #ccc; "mce_style="border: 1px solid #ccc;"/>改成<input name="number" type="text" id="number"value="{$goods.min_number|default:"1"}" size="4"onblur="changePrice()" style=”border:1px solid #ccc; "mce_style="border: 1px solid #ccc;"/><br/>这样就是value 也就是默认值了最后添加JS判断就好了themes/default/goods.dwt在var qty = document.forms['ECS_FORMBUY'].elements['number'].value;后添加{if $goods.min_number}if(qty < {$goods.min_number}){alert('您输入的数字小于此商品最小购买数量:{$goods.min_number}');qty = {$goods.min_number};}{/if}。
妙用Ajax技术实现局部刷新商品数量和总价实例代码
妙⽤Ajax技术实现局部刷新商品数量和总价实例代码1. 问题的分析 先看⼀下页⾯中的情况: 功能如上,在没有Ajax之前,⼀般都是根据⽤户修改的值去找Action,然后返回新的jsp页⾯重新加载整个页⾯,完成数字的更新。
但是有了Ajax技术后,我们可以利⽤Ajax技术局部刷新要改变的地⽅,⽽不是重新加载整个页⾯。
⾸先看⼀下上图对应的jsp部分的代码:<div class="section_container"><!-- 购物车 --><div id="shopping_cart"><div class="message success">我的购物车</div><table class="data-table cart-table" cellpadding="0" cellspacing="0"><tr><th class="align_center" width="10%">商品编号</th><th class="align_left" width="35%" colspan="2">商品名称</th><th class="align_center" width="10%">销售价格</th><th class="align_center" width="20%">数量</th><th class="align_center" width="15%">⼩计</th><th class="align_center" width="10%">删除</th></tr><c:forEach items="${sessionScope.forder.sorders }" var="sorder" varStatus="num"><tr lang="${sorder.product.id}"><td class="align_center"><a href="#" class="edit">${num.count }</a></td><td width="80px"><img src="${shop}/files/${sorder.product.pic}" width="80" height="80" /></td><td class="align_left"><a class="pr_name" href="#">${ }</a></td><td class="align_center vline">${sorder.price }</td><td class="align_center vline"><!-- ⽂本框 --><input class="text" style="height: 20px;" value="${sorder.number }" lang="${sorder.number }"></td><td class="align_center vline">${sorder.price*sorder.number }</td><td class="align_center vline"><a href="#" class="remove"></a></td></tr></c:forEach></table><!-- 结算 --><div class="totals"><table id="totals-table"><tbody><tr><td width="60%" colspan="1" class="align_left"><strong>⼩计</strong></td><td class="align_right" style=""><strong>¥<spanclass="price" id="total">${sessionScope.forder.total}</span></strong></td></tr><tr><td width="60%" colspan="1" class="align_left">运费</td><td class="align_right" style="">¥<span class="price" id="yunfei">0.00</span></td></tr><tr><td width="60%" colspan="1" class="align_left total"><strong>总计</strong></td><td class="align_right" style="">¥<span class="total" id="totalAll"><strong>${sessionScope.forder.total}</strong></span></td></tr></tbody></table><div class="action_buttonbar"><font><a href="${shop}/user/confirm.jsp"><button type="button" title="" class="checkout fr" style="background-color: #f38256;">订单确认</button></a></font><font><a href="#"><button type="button" title="" class=" fr"><font>清空购物车</font></button></font><a href="${shop}/index.jsp"><button type="button" title="" class="continue fr"><font>继续购物</font></button></a><div style="clear:both"></div></div></div></div> 看着貌似很多的样⼦,其实功能很简单,就是从域中拿出相应的数据显⽰出来⽽已,我们现在要实现上⾯描述的功能的话,先来分析⼀下思路:⾸先得注册⼀个事件:即修改了数量那⾥的⽂本框触发的事件;在该事件中,我们拿到⽤户输⼊的数,判断输⼊的合法性,因为要防⽌⽤户乱输⼊;如果合法,通过Ajax请求将数据发送到后台;后台针对新的数量,调⽤相应的业务逻辑⽅法得到新的结果,并将其通过流返回到前台;Ajax收到结果后,再对相应位置的数据进⾏更新。
ecshop的goodsattr和goodsattrid两个二次注入漏洞详细分析漏洞预警-电脑资料
ecshop的goodsattr和goodsattrid两个二次注入漏洞详细分析漏洞预警-电脑资料一:goods_attr_id的二次注入注入利用过程:1.添加商品到购物车时,写入注入代码到商品属性idPOST:goods={"quick":1,"spec":["163","158'"],"goods_id":32,"number":" 1","parent":0}注意,需要spec有两个或以上id2.在查看购物车页面,点击更新购物车,执行注入代码(二次注入嘛,单引号可用了)代码分析1./includes/lib_goods.php 942行function spec_price($spec){ if (!empty($spec)) { $where= db_create_in($spec, 'goods_attr_id'); //这里是注入位置,能控制$spec就可以了$sql = 'SELECT SUM(attr_price) AS attr_price FROM ' . $GLOBALS['ecs']->table('goods_attr') . " WHERE $where"; $price = floatval($GLOBALS['db']->getOne($sql)); } else { $price = 0; } return $price;}2./includes/lib_common.php 2266行get_final_price有spec_price的调用3.再看get_final_price方法的调用在ecshop/flow.php flow_update_cart方法,2272行/* 处理普通商品或非优惠的配件 */else { $attr_id = empty($goods['goods_attr_id']) ? array() : explode(',', $goods['goods_attr_id']); //看,$attr_id是读取的购物车商品的goods_attr_id字段,所以只要在添加商品到购物车时写入注入代码就可以了$goods_price = get_final_price($goods['goods_id'], $val, true, $attr_id); //更新购物车中的商品数量$sql = "UPDATE " .$GLOBALS['ecs']->table('cart'). " SET goods_number= '$val', goods_price = '$goods_price' WHERE rec_id='$key' AND session_id='" . SESS_ID . "'"; }二:good_attr的二次注入1.插入注入代码(goods_attr)至订单商品(/wholesale.php可以插入,即商品批发页面.2.将1生成的订单在用户中心订单查看页执行“放回购物车”操作,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ajax更新购物车数量先打开flow.dwt,找到<!-- {if $goods.goods_idgt 0 && $goods.is_gifteq 0 && $goods.parent_ideq 0} 普通商品可修改数量 -->,把下面的input框里面的替换成1.<a href="javascript:;"onclick="red_num({$goods.rec_id},{$goods.goods_id});"> -</a><input type="text" name="goods_number[{$goods.rec_id}]"id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}"size="4" class="inputBg" style="text-align:center "onblur="change_price({$goods.rec_id},{$goods.goods_id})"/><ahref="javascript:;"onclick='add_num({$goods.rec_id},{$goods.goods_id})' >+</a>复制代码然后在下一个</td>后加一段js代码1.<script type="text/javascript" charset="utf-8">2.function add_num(rec_id,goods_id)3.{4.document.getElementById("goods_number_"+rec_id+"").value++;5.6.var number =document.getElementById("goods_number_"+rec_id+"").value;7.Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceResp**e, 'GET', 'JSON');8.9.10.}11.12.function red_num(rec_id,goods_id)13.{14.if (document.getElementById("goods_number_"+rec_id+"").value>1)15.{16.document.getElementById("goods_number_"+rec_id+"").value--;17.}18.var number =document.getElementById("goods_number_"+rec_id+"").value;19.Ajax.call('flow.php', 'step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceResp**e, 'GET', 'JSON');20.21.22.}23.24.function change_price(rec_id,goods_id){25.var number =document.getElementById("goods_number_"+rec_id+"").value;26.//alert(number);27.Ajax.call('flow.php','step=update_group_cart&rec_id=' + rec_id+'&number=' + number+'&goods_id=' + goods_id, changePriceResp**e, 'GET', 'JSON');28.}29.30.function changePriceResp**e(result)31.{32.if(result.error == 1)33.{34.35.alert(result.content);36.document.getElementById("goods_number_"+result.rec_id+"").value=result.number;37.}38.else39.{40.41.document.getElementById('subtotal_'+result.rec_id).innerHTML =result.subtotal;//商品总价42.document.getElementById('cart_amount_desc').innerHTML =result.cart_amount_desc;//购物车商品总价说明43.document.getElementById('market_amount_desc').innerHTML =result.market_amount_desc;//购物车商品总市价说明44.45.}46.47.}48.</script>复制代码接着把下一行的1.<td align="right" bgcolor="#ffffff" >{$goods.subtotal}</td> 复制代码替换为1.<td align="right" bgcolor="#ffffff"id="subtotal_{$goods.rec_id}">{$goods.subtotal}</td>复制代码找到{$shopping_money}和{$market_price_desc},分别替换为1.<span id="cart_amount_desc">{$shopping_money}</span>复制代码和1.<span id="market_amount_desc">{$market_price_desc}</span>复制代码然后打开flow.php,在elseif ($_REQUEST['step'] == 'c**ignee')上面加这一段代码。
1.//二次开发,ajax更新购物车2.elseif($_REQUEST['step']=='update_group_cart')3.{4.include_once('includes/cls_json.php');5.$result = array('error' => 0, 'message' => '', 'content' => '','goods_id' => '');6.$json = new JSON;7.$rec_id = $_GET['rec_id'];8.$number = $_GET['number'];9.$goods_id = $_GET['goods_id'];10.$result['rec_id'] = $rec_id;11.12.13.14.if ($GLOBALS['_CFG']['use_storage'] == 1)15.{16.$goods_number = $GLOBALS['db']->getOne("select goods_number from".$GLOBALS['ecs']->table('goods')." where goods_id='$goods_id'");17.if($number>$goods_number)18.{19.$result['error'] = '1';20.$result['content'] ='对不起,您选择的数量超出库存您最多可购买'.$goods_number."件";21.$result['number']=$goods_number;22.die($json->encode($result));23.}24.25.}26.$sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SETgoods_number = '$number' WHERE rec_id = $rec_id";27.$GLOBALS['db']->query($sql);28.29./* 取得商品列表,计算合计 */30.$cart_goods = get_cart_goods();31.32.$subtotal = $GLOBALS['db']->getONE("select goods_price *goods_number AS subtotal from ".$GLOBALS['ecs']->table('cart')."where rec_id = $rec_id");33.$result['subtotal'] = price_format($subtotal, false);34.$result['cart_amount_desc'] = sprintf($_LANG['shopping_money'],$cart_goods['total']['goods_price']);35.$result['market_amount_desc'] =sprintf($_LANG['than_market_price'],$cart_goods['total']['market_price'],$cart_goods['total']['saving'],$cart_goods['total']['save_rate']36.);37.38.die($json->encode($result));39.}。