教你在ecshop商城中实现一个经典实用的购物车功能

更新时间:2016-08-11 点击量:2062





                                                                                                   

在购物流程页中,修改商品数量后可以自动更新购物车里的数据的功能,网上虽有少量方法,但是代码修改量比较大,而且考虑不是很周全,如礼品等的计算,数量框输入非数字字符后的反应等等。
优易软件觉得没有必要搞这么麻烦,代码多了反而影响速度。直接利用原来的更新购物车按钮和系统默认的判断并进行少量修改就能很安全简单的实现自动更新功能。
思路就是用一小段JS代码来代替更新按钮进行表单提交,在商品数量输入框代码中添加一个失去焦点触发上述JSonblur事件,在flow.phpupdate_cart过程页中修改跳转,让其自动跳回flow.php而不显示修改信息即可。
2.7.0版的default模版为例:
1.备份并修改模版目录下的 flow.dwt 文件:
(1) <head>之间添加一段JS,用于取代更新按钮实现表单提交: <script type="text/javascript">

function formSubmit()
{
     document.getElementById("formCart").submit();
}
</script>

(2) <body>之间找到诸如以下代码:

 
<!-- {if $goods.goods_id gt 0 && $goods.is_gift eq 0 && $goods.parent_id eq 0} 
普通商品可修改数量 
-->
<input type="text" name="goods_number[{$goods.rec_id}]" id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}" size="4" style="text-align:center "
 onkeydown="showdiv(this)"/>


改成对象失去焦点时触发事件:onblur="formSubmit()" ,如:

<!-- {if $goods.goods_id gt 0 && $goods.is_gift eq 0 && $goods.parent_id eq 0} 
普通商品可修改数量 
-->
<input type="text" name="goods_number[{$goods.rec_id}]" id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}" size="4" style="text-align:center "
 onblur="formSubmit()"/>


(3) 再找到下面的代码:

<input name="submit" type="submit" value="{$lang.update_cart}" />


把 这段代码删掉,就等于把更新购物车这个按钮删掉了。如果想保留该按钮,一定要把name="submit"中的submit改成其他名字,否则在 firebug下会报submit is not a function错误。原因是<form>之间如果有name="submit"的元素话,在用 document.getElementById("formCart").submit()提交表单的时候,该元素会和submit()方法发生混淆造 成该错误。

 

                                                                                                




2.备份并修改根目录下的 flow.php 文件:
找到以下代码:

elseif ($_REQUEST['step'] == 'update_cart')



show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], 'flow.php');

整行注释掉,
在它上面添加一行代码:ecs_header("Location: flow.php\n");
用于实现更新购物车自动跳转回详细页,如: elseif ($_REQUEST['step'] == 'update_cart')

{
/*------------------------------------------------------ */
//-- 
更新购物车
/*------------------------------------------------------ */
if (isset($_POST['goods_number']) && is_array($_POST['goods_number']))
{
flow_update_cart($_POST['goods_number']);
}
ecs_header("Location: flow.php\n");
// show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], 'flow.php');
exit;
}

完成!

支付宝扫码打赏 微信打赏

如果文章对您有帮助,就打赏一个吧

在线客服

客户服务

热线电话:

13128985956 服务时间:

周一到周六:9:00-18:00

在线QQ客服

在线微信客服

关于我们 常见问题

支付方式 加盟合作

提交需求
优惠红包 购物车0 反馈留言 返回顶部