ecshop手机模板中多个checkbox怎么在模板输出的

ECSHOP批量添加商品到购物车 - ECshop商城二次开发博客 - 博客园
ECshop二次开发博客
ECSHOP是一款开源的网上商店系统,在我心目中可以算得上网上商城界的Wordpress了。本文介绍如何实现在ecshop中批量添加商品到购物车。大家都知道,默认的ecshop只能单件点击&添加到购物车&(Add to Cart)实现一件一件的添加商品到购物车,无法经过多选之后批量添加。
其实实现的方法比较简单,Ecshop本身的添加商品到购物车使用的是一个js函数调用json来post数据的,这里我们就可以使用已有的这个函数 addToCart()来实现批量添加。下面给出具体操作步骤。
1. 修改商品列表模板 /themes/default/library/goods_list.lbi 在其中每个商品的前面增加一个复选框按钮。即默认模板大约第74行,增加代码:
&input type="checkbox" value="{$goods.goods_id}" /&
2. 增加可以添加选定商品到购物车的链接。位置任选,代码如下:
&a href="javascript:addSelectedToCart('goodslist')"&Add selected products to cart&/a&
3.添加循环将选定商品加入购物车的函数,打开/js/common.js文件,在第36行,加入如下代码:
*添加选定商品到购物车
function addSelectedToCart(p)
for ( var i=0; i&document.getElementById(p).elements. i++ )
var e = document.getElementById(p).elements[i];
if ( (e.type=='checkbox')&&(!e.disabled) )
if ( e.checked )
addToCart(e.value) ;
随笔 - 204如何去掉ECSHOP后台分配权限多余的复选框,知道的,详细说一下呗~。。没分了_百度知道
如何去掉ECSHOP后台分配权限多余的复选框,知道的,详细说一下呗~。。没分了
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
<span class="wgt-replyer-all-uname
" data-href="https://zhidao.baidu.com/usercenter?uid=4a705eqzuwc82
<span class="wgt-replyer-all-card-name3 wgt-replyer-all-card-names" data-href="https://zhidao.baidu.com/usercenter?uid=4a705eqzuwc82
采纳数:120
获赞数:264
擅长:暂未定制
&input type=&checkbox& name=&card& value=&& checked=&true& onclick=&selectCard(this)& /&function selectCard(obj) { Ajax.call(&#39;flow.php?step=select_card&#39;, &#39;card=&#39; + obj.value+&#39;&act=&#39;+obj.checked?&#39;add&#39;:&#39;delete&#39;, orderSelectedResponse, &#39;GET&#39;, &#39;JSON&#39;); }在flow.php中根据act值执行添加或删除操作
是后台哦.不是购物流程
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在ecshop里面添加了一个单选框标签,为什么是复选框的功能_百度知道
在ecshop里面添加了一个单选框标签,为什么是复选框的功能
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
获赞数:183
单选按钮 radio
中name设置成相同的名称
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1、Ecshop后台配送方式创建
2、商品绑定配送方式的运费模板
2.1 数据表&ecs_goods&增加一个字段,执行下面SQL语句:
2.2 后台添加/编辑 商品 调出已经安装配送方式 "admin/ goods.php ",将此shipping_list函数添加到goods.php最末处。
2.3 后台添加/编辑商品 实现绑定配送方式"admin/goods_info.htm"
3、前台商品详情调用设置好的配送方式
4、结算流程中,根据配送地址计算运费
4.1 重写&include/lib_order.php&中last_shipping_and_payment函数。多个商品,不同配送方式,调用配送方式ID,以最贵配送方式计算。买家可以找客服进行,运费改价。
5、经过上面多处增加/修改,测试一下运行效果。
淘宝网(Taobao)购物的宝贝详情页面,可以针对不同地区显示不同运费,运费由后台设定;结算时间,按重量、件数计算运费。Ecshop本身有配送方式插件,已有多家物流公司插件,例如:顺丰快递、申通快递、圆通快递等。本文介绍如何实现按地区显示运费,并且让每个商品绑定运费模板。
& & &1、Ecshop后台配送方式创建
& & & 进入Ecshop后台"系统设置--&配送方式",将&顺丰快递&改名称为&粮食快递&,配送ID号为6。
2、商品绑定配送方式的运费模板
& & & &2.1 数据表&ecs_goods&增加一个字段,执行下面SQL语句:
ALTER TABLE
`ecs_goods` ADD `shipping_id` MEDIUMINT(9) NOT NULL DEFAULT '6';
&&2.2 后台添加/编辑&商品 调出已经安装配送方式&"admin/&goods.php&",将此shipping_list函数添加到goods.php最末处。
* 取得已安装的配送方式
已安装的配送方式
function shipping_list()
$sql = 'SELECT shipping_id, shipping_name ' .
'FROM ' . $GLOBALS['ecs']-&table('shipping') .
' WHERE enabled = 1';
return $GLOBALS['db']-&getAll($sql);
&在代码前&$smarty-&assign('unit_list', get_unit_list());&增加调用代码
// LONGHTML 增加运费模板
$smarty-&assign('shipping_list', shipping_list());
$smarty-&assign('unit_list', get_unit_list());
&在&/* 处理商品数据 */&后面,增加POST过来的&shipping_id&&表单值进行赋值&
/* 处理商品数据 */
// LONGHTML 运费模板(新增,更新)
$shipping_id = empty($_POST['shipping_id']) ? '0' : intval($_POST['shipping_id']);
最后一步是&插入/更新&商品时,对&shipping_id&字段实现处理。直接替换掉下面代码
/* 入库 */
if ($is_insert)
if ($code == '')
$sql = "INSERT INTO " . $ecs-&table('goods') . " (goods_name, goods_name_style, goods_sn, " .
"cat_id, brand_id, shop_price, logi_cost, market_price, is_promote, promote_price, " .
"promote_start_date, promote_end_date, goods_img, index_img, goods_thumb, original_img, keywords, goods_brief, " .
"seller_note, goods_weight, goods_number, warn_number, integral, give_integral, is_best, is_new, is_hot, " .
"is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, rank_integral, suppliers_id, province, city, virtual_buy,shipping_id)" .
"VALUES ('$_POST[goods_name]', '$goods_name_style', '$goods_sn', '$catgory_id', " .
"'$brand_id', '$shop_price', '$logi_cost', '$market_price', '$is_promote','$promote_price', ".
"'$promote_start_date', '$promote_end_date', '$goods_img', '$index_img', '$goods_thumb', '$original_img', ".
"'$_POST[keywords]', '$_POST[goods_brief]', '$_POST[seller_note]', '$goods_weight', '$goods_number',".
" '$warn_number', '$_POST[integral]', '$give_integral', '$is_best', '$is_new', '$is_hot', '$is_on_sale', '$is_alone_sale', $is_shipping, ".
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$rank_integral', '$suppliers_id', '$goods_provincestr', '$goods_citystr', '$virtual_buy', '$shipping_id' )";
$sql = "INSERT INTO " . $ecs-&table('goods') . " (goods_name, goods_name_style, goods_sn, " .
"cat_id, brand_id, shop_price, logi_cost, market_price, is_promote, promote_price, " .
"promote_start_date, promote_end_date, goods_img, index_img, goods_thumb, original_img, keywords, goods_brief, " .
"seller_note, goods_weight, goods_number, warn_number, integral, give_integral, is_best, is_new, is_hot, is_real, " .
"is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, extension_code, rank_integral, province, city, virtual_buy,shipping_id)" .
"VALUES ('$_POST[goods_name]', '$goods_name_style', '$goods_sn', '$catgory_id', " .
"'$brand_id', '$shop_price', '$logi_cost', '$market_price', '$is_promote','$promote_price', ".
"'$promote_start_date', '$promote_end_date', '$goods_img', '$index_img', '$goods_thumb', '$original_img', ".
"'$_POST[keywords]', '$_POST[goods_brief]', '$_POST[seller_note]', '$goods_weight', '$goods_number',".
" '$warn_number', '$_POST[integral]', '$give_integral', '$is_best', '$is_new', '$is_hot', 0, '$is_on_sale', '$is_alone_sale', $is_shipping, ".
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$code', '$rank_integral', '$goods_provincestr', '$goods_citystr', '$virtual_buy', '$shipping_id')";
/* 如果有上传图片,删除原来的商品图 */
$sql = "SELECT goods_thumb, goods_img, index_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']);
if ($index_img && $row['index_img'] && !goods_parse_url($row['index_img']))
@unlink(ROOT_PATH . $row['index_img']);
$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', " .
"logi_cost = '$logi_cost', " .
"market_price = '$market_price', " .
"is_promote = '$is_promote', " .
"promote_price = '$promote_price', " .
"promote_start_date = '$promote_start_date', " .
"suppliers_id = '$suppliers_id', " .
"province = '$goods_provincestr', " .
"city = '$goods_citystr', " .
"virtual_buy = '$virtual_buy', " .
"shipping_id = '$shipping_id', " .
"promote_end_date = '$promote_end_date', ";
/* 如果有上传图片,需要更新数据库 */
2.3 后台添加/编辑商品 实现绑定配送方式"admin/goods_info.htm"
&td class="label"&运费模板&/td&
&td&&select name="shipping_id" &&option value="0"&{$lang.select_please}
{foreach from=$shipping_list item=shipping}
&option value="{$shipping.shipping_id}" {if $shipping.shipping_id eq $goods.shipping_id}selected{/if}&{$shipping.shipping_name}&/option&
{/foreach}
&/select&{$lang.require_field}&/td&
在品牌下面,增加绑定运费模板。效果如下:
3、前台商品详情调用设置好的配送方式
& & & 以主题default为例,增加新文件:& & & & & 1、chrome.js (themes/default/js)& & & & & 2、icon_2.jpg (themes/default/images)
goods.php页面商品显示部分加入调用代码
/***** 商品页按地区显示运费 ***********************************************************************/
$shippings = array();
$res = $db-&GetAll("SELECT shipping_name, shipping_id FROM ecs_shipping WHERE shipping_id=".$goods['shipping_id']);
foreach ($res as $value)
$areas = array();
$res1 = $db-&GetAll("SELECT * FROM ecs_shipping_area WHERE shipping_id = $value[shipping_id]");
foreach ($res1 as $area)
$configure = unserialize($area['configure']);
if (is_array($configure))
foreach ($configure as $c)
if ($c['name'] == 'base_fee')
$price = $c['value'];
$sql = "SELECT a.region_id, r.region_name ".
"FROM ".$ecs-&table('area_region')." AS a, ".$ecs-&table('region'). " AS r ".
"WHERE r.region_id=a.region_id AND a.shipping_area_id='$area[shipping_area_id]'";
$res2 = $db-&query($sql);
while ($arr = $db-&fetchRow($res2))
$value['areas'][$arr['region_name']] = $price;
$shippings[] = $value;
$res = $db-&GetAll("SELECT region_id,region_name FROM ecs_region WHERE parent_id = 1");
if($goods['shipping_id'] == 6)
$current_region = '广东';
//默认显示广东省
$smarty-&assign('current_region', & $current_region);
$smarty-&assign('current_price', & '7');
foreach ($res as $value)
$row = array();
foreach ($shippings as $a =& $shipping)
if ($shipping['areas'])
foreach ($shipping['areas'] as $key =& $price)
if ($key == $value['region_name'])
$row[$a]['shipping_price'] = $price;
if ($row[$a]['shipping_price'] & 0)
$row[$a]['shipping_name'] = $shipping['shipping_name'];
$value['shippings'] = $row;
if ($value['shippings']) $regions[] = $value;
$smarty-&assign('regions', & & & & & & &$regions);
/****************************************************************************/
goods.dwt &加在需要显示运费的地方
&&!--{if $regions}--&
&script src="themes/yihaodian/js/chrome.js" type="text/javascript"&&/script&
{foreach from=$regions key=key item=value}
{if $key == 0}
&p id="chromemenu"&至 &a rel="dropmenu1" href="javascript:;"&&b id="s_a_name"&{$current_region}&/b&&img style="margin:0 2px 0 2" src="images/icon_2.jpg" align="absmiddle" /&&/a&:&b id="s_a_price"&
{foreach from=$value.shippings item=shipping}
{$shipping.shipping_name}{$current_price}元 &
{/foreach}
{/foreach}
&div id="dropmenu1" class="dropmenudiv"&
{foreach from=$regions item=value}
&a href="javascript:;" onclick="show_shipping('{$value.region_name}','{foreach from=$value.shippings item=shipping}{$shipping.shipping_name}{$shipping.shipping_price}元 &{/foreach}')"&{$value.region_name}&/a&
{/foreach}
function show_shipping(name,price)
document.getElementById("s_a_name").innerHTML =
document.getElementById("s_a_price").innerHTML =
cssdropdown.startchrome("chromemenu");
#chromemenu b { font-weight:normal}
.dropmenudiv {position:absolute;top: 0;z-index:<span style="background-color: #f5f5f5; color: #;width:<span style="background-color: #f5f5f5; color: #px;visibility: hidden; background:#fdffee; padding:8px; border:solid #ffbf69 2px; line-height:25px;}
.dropmenudiv a { margin:<span style="background-color: #f5f5f5; color: #px 0 5px;}
&!--{/if}--&
前台显示最终效果图,默认广东省
&4、结算流程中,根据配送地址计算运费
4.1 重写&include/lib_order.php&中last_shipping_and_payment函数。多个商品,不同配送方式,调用配送方式ID,以最贵配送方式计算。买家可以找客服进行,运费改价。
* 获得上一次用户采用的支付和配送方式
function last_shipping_and_payment()
$sql = "SELECT shipping_id, pay_id " .
" FROM " . $GLOBALS['ecs']-&table('order_info') .
" WHERE user_id = '$_SESSION[user_id]' " .
" ORDER BY order_id DESC LIMIT 1";
$row = $GLOBALS['db']-&getRow($sql);
/* LONGHTML 获得购物车中商品 运费模板最大值 */
$sql = "SELECT DISTINCT max(g.shipping_id) as
shipping_id " .
" FROM " . $GLOBALS['ecs']-&table('cart') ." AS c ".
" LEFT JOIN " . $GLOBALS['ecs']-&table('goods') . " AS g ON c.goods_id = g.goods_id" .
" WHERE c.`session_id` =
'" . SESS_ID . "'".
" AND c.`extension_code` !=
'package_buy' ";
$shipping_id = $GLOBALS['db']-&getOne($sql);
$row['shipping_id'] = $shipping_id;
if (empty($row))
/* 如果获得是一个空数组,则返回默认值 */
$row = array('shipping_id' =& 0, 'pay_id' =& 0);
return $row;
4.2 &flow.php购物流程checkout,done步骤,调用商品绑定的配送方式
/* 对是否允许修改购物车赋值 */
if ($flow_type != CART_GENERAL_GOODS || $_CFG['one_step_buy'] == '1')
$smarty-&assign('allow_edit_cart', 0);
$smarty-&assign('allow_edit_cart', 1);
// LONGHTML 最大值的运费模板
$arr = last_shipping_and_payment();
$_SESSION['flow_order']['shipping_id'] = $arr['shipping_id'];
$smarty-&assign('select_shipping_id', $arr['shipping_id']);
/* 检查收货人信息是否完整 */
if (!check_consignee_info($consignee, $flow_type))
/* 如果不完整则转向到收货人信息填写界面 */
ecs_header("Location: flow.php?step=consignee\n");
$_POST['how_oos'] = isset($_POST['how_oos']) ? intval($_POST['how_oos']) : 0;
$_POST['card_message'] = isset($_POST['card_message']) ? htmlspecialchars($_POST['card_message']) : '';
$_POST['inv_type'] = !empty($_POST['inv_type']) ? htmlspecialchars($_POST['inv_type']) : '';
$_POST['inv_payee'] = isset($_POST['inv_payee']) ? htmlspecialchars($_POST['inv_payee']) : '';
$_POST['inv_content'] = isset($_POST['inv_content']) ? htmlspecialchars($_POST['inv_content']) : '';
$_POST['postscript'] = isset($_POST['postscript']) ? htmlspecialchars($_POST['postscript']) : '';
// LONGHTML 最大值的运费模板
$arr = last_shipping_and_payment();
$_SESSION['flow_order']['shipping_id'] = $arr['shipping_id'];
将themes/default/flow.dwt配送方式隐藏掉
&!--{if $total.real_goods_count neq 0}--&
&div class="" style="display:"&
&h5&&span&{$lang.shipping_method}&/span&&/h5&
&table width="984" align="center" border="0" cellpadding="5" cellspacing="1" bgcolor="#dddddd" id="shippingTable"&
&tr align="center"&
&th align="center" bgcolor="#ffffff" width="5%"&&&/th&
&th align="center" bgcolor="#ffffff" width="25%"&{$lang.name}&/th&
&th align="center" bgcolor="#ffffff"&{$lang.describe}&/th&
&th align="center" bgcolor="#ffffff" width="15%"&{$lang.fee}&/th&
&th align="center" bgcolor="#ffffff" width="15%"&{$lang.free_money}&/th&
&th align="center" bgcolor="#ffffff" width="15%"&{$lang.insure_fee}&/th&
&!-- {foreach from=$shipping_list item=shipping} 循环配送方式 --&
&tr align="center"&
&td align="center" bgcolor="#ffffff" valign="top"&&input name="shipping" id="shipping_se" type="radio" value="{$shipping.shipping_id}" {if ($order.shipping_id eq $shipping.shipping_id) or true}checked="true"{/if} supportCod="{$shipping.support_cod}" insure="{$shipping.insure}" onclick="selectShipping(this)" /&
&td align="center" bgcolor="#ffffff" valign="top"&&strong&{$shipping.shipping_name}&/strong&&/td&
&td align="center" bgcolor="#ffffff" valign="top"&{$shipping.shipping_desc}&/td&
&td bgcolor="#ffffff" align="center" valign="top"&{$shipping.format_shipping_fee}&/td&
&td bgcolor="#ffffff" align="center" valign="top"&{$shipping.free_money}&/td&
&td bgcolor="#ffffff" align="center" valign="top"&{if $shipping.insure neq 0}{$shipping.insure_formated}{else}{$lang.not_support_insure}{/if}&/td&
&!-- {/foreach} 循环配送方式 --&
&!-- LONGHTML --&&script&selectShipping02({$select_shipping_id});&/script& &!-- END --&
&tr align="center"&
&td colspan="6" bgcolor="#ffffff" align="center"&&label for="ECS_NEEDINSURE"&
&input name="need_insure" id="ECS_NEEDINSURE" type="checkbox"
onclick="selectInsure(this.checked)" value="1" {if $order.need_insure}checked="true"{/if} {if $insure_disabled}disabled="true"{/if}
{$lang.need_insure} &/label&&/td&
&div class="blank"&&/div&
&!--{else}--&
&input name = "shipping" type="radio" value = "-1" checked="checked"
style="display:none"/&
&!--{/if}--&
&5、经过上面多处增加/修改,测试一下运行效果。
广东 &首重10KG&7元,续重0.7元/KG&
&PS:感谢个人站长的帮助。
阅读(...) 评论()ecshop是一个非常灵活的电子商务系统,他可以在优惠活动中,为某个商品增加赠送礼品.不但可以设置价格,还可以免费赠送。
在购物的时候,如果你选择了某商品,而且该商品又设置了赠送礼品,那么在购物车的cart页面,将会通过以下程序调用赠品.看下面以下ecshop函数
function favourable_list($user_rank)
/* 购物车中已有的优惠活动及数量 */
$used_list = cart_favourable();
/* 当前用户可享受的优惠活动 */
$favourable_list = array();
$user_rank = ',' . $user_rank . ',';
$now = gmtime();
$sql = "SELECT * " .
"FROM " . $GLOBALS['ecs']-&table('favourable_activity') .
" WHERE CONCAT(',', user_rank, ',') LIKE '%" . $user_rank . "%'" .
" AND start_time &= '$now' AND end_time &= '$now'" .
" AND act_type = '" . FAT_GOODS . "'" .
" ORDER BY sort_order";
$res = $GLOBALS['db']-&query($sql);
while ($favourable = $GLOBALS['db']-&fetchRow($res))
$favourable['start_time'] = local_date($GLOBALS['_CFG']['time_format'], $favourable['start_time']);
$favourable['end_time']
= local_date($GLOBALS['_CFG']['time_format'], $favourable['end_time']);
$favourable['formated_min_amount'] = price_format($favourable['min_amount'], false);
$favourable['formated_max_amount'] = price_format($favourable['max_amount'], false);
$favourable['gift']
= unserialize($favourable['gift']);
foreach ($favourable['gift'] as $key =& $value)
$favourable['gift'][$key]['formated_price'] = price_format($value['price'], false);
$favourable['gift'][$key]['goods_thumb'] = $GLOBALS['db']-& getOne("select goods_thumb from ".$GLOBALS['ecs']-&table('goods')." where goods_id = $value[id]");
$favourable['act_range_desc'] = act_range_desc($favourable);
$favourable['act_type_desc'] = sprintf($GLOBALS['_LANG']['fat_ext'][$favourable['act_type']], $favourable['act_type_ext']);
/* 是否能享受 */
$favourable['available'] = favourable_available($favourable);
if ($favourable['available'])
/* 是否尚未享受 */
$favourable['available'] = !favourable_used($favourable, $used_list);
$favourable_list[] = $
return $favourable_
其中的gift值就是赠品的数据信息.而在模板flow.dwt中。
!-- {foreach from=$favourable.gift item=gift} --&&br /&
&input type="checkbox" value="{$gift.id}" name="gift[]" /&
&a href="/goods.php?id={$gift.id}" target="_blank"&{$gift.name}&/a& [{$gift.formated_price}]
&!-- {/foreach} --&
就是循环显示赠品的相关信息.
没有更多推荐了,

我要回帖

更多关于 ecshop模板制作教程 的文章

 

随机推荐