北京网店建设
网站地图
RSS订阅
匿名投稿
开网店送空间和顶级域名
您的位置:北京网店建设 > 网店建设 > ecshop模板开发

ecshop模板开发使用ajax更新购物车数量

作者:admin 来源:未知 日期:2010-5-5 10:34:00 人气: 标签:ecshop模板开发
导读:修改前请先备份下列档案:  themes/模板名称/flow.dwt  flow.php开启 themes/模板名称/flow.dwt搜寻 name="goods_number[{$goods.rec_id}]"复制代码
修改前请先备份下列档案:
    themes/模板名称/flow.dwt
    flow.php

开启 themes/模板名称/flow.dwt

搜寻
  1. name="goods_number[{$goods.rec_id}]"
复制代码
会找到类似这段... (依据个人使用的模组不同会有些许差异)
  1. <input class="TextInput" name="goods_number[{$goods.rec_id}]" id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}" type="text" size="4" onkeydown="showdiv(this)"/>
复制代码
置换成... (依据个人使用的模组不同会有些许差异)
  1. <input class="TextInput" onblur="changePrice(document.getElementById('goods_number_{$goods.rec_id}').value,{$goods.rec_id})" name="goods_number[{$goods.rec_id}]" id="goods_number_{$goods.rec_id}" value="{$goods.goods_number}" size="4" id="ECS_FORMBUY">
复制代码
搜寻
  1. <!-- {if $step eq "cart"} -->
复制代码
在下面加入
  1. <script type="text/javascript">
  2. /**
  3. * 点选可选属性或改变数量时修改商品价格的函数
  4. */
  5. function changePrice(number,rec_id)
  6. {
  7. //var attr = getSelectedAttributes(document.forms['ECS_FORMBUY']);
  8. // var qty = document.forms['ECS_FORMBUY'].elements['number'].value;
  9. Ajax.call('flow.php', 'step=update_cart_ajax&rec_id=' + rec_id +'&number=' + number, changePriceResponse, 'GET', 'JSON');
  10. }
  11. /**
  12. * 接收返回的信息
  13. */
  14. function changePriceResponse(res)
  15. {
  16. document.getElementById('goods_number_' + res.rec_id).value = res.goods_number;
  17. if (res.error > 0)
  18. {
  19. alert(res.content);
  20. }
  21. else
  22. {
  23. document.getElementById('subtotal_'+res.rec_id).innerHTML = res.subtotal;//商品小计
  24. document.getElementById('cart_amount_desc').innerHTML = res.cart_amount_desc;//购物车商品总价说明
  25. document.getElementById('market_amount_desc').innerHTML = res.market_amount_desc;//购物车商品总市价说明

  26. //更新购物车区块 (若你的购物流程页面没有包含 {insert name='cart_info'} 的话,则不需要放这段)
  27. //var cartInfo = document.getElementById('ECS_CARTINFO');
  28. //if (cartInfo)
  29. //{
  30.   //cartInfo.innerHTML = res.content;
  31. //}

  32. }
  33. }
  34. </script>
复制代码
搜寻
  1. {$goods.subtotal}
复制代码
替换为
  1. <div id="subtotal_{$goods.rec_id}">{$goods.subtotal}</div>
复制代码
搜寻
  1. {$shopping_money}
复制代码
替换为
  1. <span id="cart_amount_desc">{$shopping_money}</span>
复制代码
搜寻
  1. {$market_price_desc}
复制代码
替换为
  1. <span id="market_amount_desc">{$market_price_desc}</span>
复制代码
搜寻
  1. {$lang.update_cart}
复制代码
会找到类似这段... (依据个人使用的模组不同会有些许差异)
  1. <input name="submit" type="submit" class="bnt_num6" value="{$lang.update_cart}" />
复制代码
将上面整段移除

搜寻
  1. value="update_cart"
复制代码
会找到类似这段... (依据个人使用的模组不同会有些许差异)
  1. <input type="hidden" name="step" value="update_cart" />
复制代码
将上面整段移除

存档关闭後上传...

开启 flow.php


搜寻
  1. elseif ($_REQUEST['step'] == 'update_cart')
复制代码
在上面加入
  1. elseif($_REQUEST['step'] == 'update_cart_ajax')
  2. {
  3. /*------------------------------------------------------ */
  4. //-- AJAX更新购物车
  5. /*------------------------------------------------------ */
  6. include_once('includes/cls_json.php');
  7. $json = new JSON();
  8. $result = array('error' => '', 'content' => '');
  9. $rec_id = $_GET['rec_id'];
  10. $number = $_GET['number'];

  11. $goods_number = array($_GET['rec_id'] => $_GET['number']);
  12. if (isset($goods_number) && is_array($goods_number))
  13. {
  14. if(flow_update_cart_ajax($goods_number)){
  15. die($json->encode(flow_update_cart_ajax($goods_number)));
  16. }
  17. }
  18. /* 取得商品列表,计算合计 */
  19. $cart_goods = get_cart_goods();
  20. #计算此订单总价
  21. $subtotal = $GLOBALS['db']->getONE("select goods_price * goods_number AS subtotal from ".$GLOBALS['ecs']->table('cart')." where rec_id = $rec_id");
  22. #购物车商品总金额
  23. $result['goods_number'] = $number;
  24. $result['subtotal'] = price_format($subtotal, false);
  25. $result['cart_amount_desc'] = sprintf($_LANG['shopping_money'], $cart_goods['total']['goods_price']);
  26. $result['market_amount_desc'] = sprintf($_LANG['than_market_price'], $cart_goods['total']['market_price'], $cart_goods['total']['saving'], $cart_goods['total']['save_rate']
  27. );
  28. $result['rec_id'] = $rec_id;
  29. //$result['content'] = insert_cart_info();    //更新购物车区块 (若你的购物流程页面没有包含 {insert name='cart_info'} 的话,则不需要放这段)
  30. die($json->encode($result));
  31. }
复制代码
搜寻
  1. function flow_update_cart($arr)
复制代码
在上面加入
  1. function flow_update_cart_ajax($arr)
  2. {
  3. foreach ($arr AS $key => $val)
  4. {
  5. $val = intval(make_semiangle($val));
  6. $sql = "SELECT `goods_id`, `goods_attr_id`, `extension_code`,`goods_number` FROM" .$GLOBALS['ecs']->table('cart').
  7. " WHERE rec_id='$key' AND session_id='" . SESS_ID . "'";
  8. $goods = $GLOBALS['db']->getRow($sql);
  9. $sql = "SELECT g.goods_name, g.goods_number ".
  10. "FROM " .$GLOBALS['ecs']->table('goods'). " AS g, ".
  11. $GLOBALS['ecs']->table('cart'). " AS c ".
  12. "WHERE g.goods_id = c.goods_id AND c.rec_id = '$key'";
  13. $row = $GLOBALS['db']->getRow($sql);
  14. $result['error'] = '1';
  15. $result['rec_id'] = $key;
  16. /* 数量是否小於0 */
  17. if ($val <= 0)
  18. {
  19. $result['goods_number'] = $goods['goods_number'];
  20. $result['content'] = $GLOBALS['_LANG']['goods_number_not_int'];
  21. return $result;
  22. }
  23. /* 系统启用了库存,检查输入的商品数量是否有效 */
  24. if (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] != 'package_buy')
  25. {
  26. if ($row['goods_number'] < $val)
  27. {
  28. $result['goods_number'] = $goods['goods_number'];
  29. $result['content'] =sprintf($GLOBALS['_LANG']['stock_insufficiency'], $row['goods_name'],$row['goods_number'], $row['goods_number']);
  30. return $result;
  31. }
  32. }
  33. elseif (intval($GLOBALS['_CFG']['use_storage']) > 0 && $goods['extension_code'] == 'package_buy')
  34. {
  35. if (judge_package_stock($goods['goods_id'], $val))
  36. {
  37. $result['content'] =$GLOBALS['_LANG']['package_stock_insufficiency'];
  38. return $result;
  39. }
  40. }
  41. /* 检查该项是否为基本件以及有没有配件存在 */
  42. $sql = "SELECT a.goods_number, a.rec_id FROM " .$GLOBALS['ecs']->table('cart') . " AS b ".
  43. "LEFT JOIN " . $GLOBALS['ecs']->table('cart') . " AS a ".
  44. "ON a.parent_id = b.goods_id AND a.session_id = '" . SESS_ID . "' AND a.extension_code <> 'package_buy'".
  45. "WHERE b.rec_id = '$key'";
  46. $fittings = $GLOBALS['db']->getAll($sql);
  47. if ($val > 0)
  48. {
  49. foreach ($fittings AS $k => $v)
  50. {
  51. if ($v['goods_number'] != null && $v['rec_id'] != null)
  52. {
  53. /* 该商品有配件,更新配件的商品数量 */
  54. $num = ($v['goods_number']) > $val ? $val : $v['goods_number'];

  55. $sql = "UPDATE " . $GLOBALS['ecs']->table('cart') .
  56. " SET goods_number = '$num' WHERE rec_id = $v[rec_id]";
  57. $GLOBALS['db']->query($sql);
  58. }
  59. }

  60. if ($goods['extension_code'] == 'package_buy')
  61. {
  62. /* 更新购物车中的商品数量 */
  63. $sql = "UPDATE " .$GLOBALS['ecs']->table('cart').
  64. " SET goods_number = '$val' WHERE rec_id='$key' AND session_id='" . SESS_ID . "'";
  65. }
  66. else
  67. {
  68. $attr_id = empty($goods['goods_attr_id']) ? array() : explode(',', $goods['goods_attr_id']);
  69. $goods_price = get_final_price($goods['goods_id'], $val, true, $attr_id);

  70. /* 更新购物车中的商品数量 */
  71. $sql = "UPDATE " .$GLOBALS['ecs']->table('cart').
  72. " SET goods_number = '$val', goods_price = '$goods_price' WHERE rec_id='$key' AND session_id='" . SESS_ID . "'";
  73. }
  74. }
  75. else
  76. {
  77. if (is_object($fittings) && $fittings->goods_number != null && $fittings->rec_id != null)
  78. {
  79. $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart'). " WHERE rec_id=$fittings[rec_id]";
  80. $GLOBALS['db']->query($sql);
  81. }

  82. $sql = "DELETE FROM " .$GLOBALS['ecs']->table('cart').
  83. " WHERE rec_id='$key' AND session_id='" .SESS_ID. "'";
  84. }

  85. $GLOBALS['db']->query($sql);
  86. }

  87. /* 删除所有赠品 */
  88. $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '" .SESS_ID. "' AND is_gift <> 0";
  89. $GLOBALS['db']->query($sql);
  90. }
复制代码
存档关闭後上传...
本文连接地址:http://www.511sj.com/html/wangdianjianshe/ecshop_mobankaifa/1151.Html

编辑整理:北京网店建设 ecshop模板 ecshop模板

共有:条评论信息评论信息
发表评论
姓 名:
验证码: