教你在ecshop商城中實現一個經典實用的購物車功能
更新時間:2016-08-11 點擊量:1084
Tag關鍵詞: 經典 購物車 ecshop模板 ecshop4.0模板 二次開發 ecshop3.6模板 ecshop小程序
在購物流程頁中,修改商品數量后可以自動更新購物車里的數據的功能,網上雖有少量方法,但是代碼修改量比較大,而且考慮不是很周全,如禮品等的計算,數量框輸入非數字字符后的反應等等。
優易軟件覺得沒有必要搞這么麻煩,代碼多了反而影響速度。直接利用原來的“更新購物車”按鈕和系統默認的判斷并進行少量修改就能很安全簡單的實現自動更新功能。
思路就是用一小段JS代碼來代替更新按鈕進行表單提交,在商品數量輸入框代碼中添加一個失去焦點觸發上述JS的onblur事件,在flow.php的update_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; }
完成!
如果文章對您有幫助,就打賞一個吧