ecshop微信商城
??官方微博: 腾讯 ?
首页 > ECSHOP教程 > ECSHOP二次开发 > ECSHOP二次开发教程 > ECSHOP运费配送方式仿淘宝地区运费亚博体育手机游戏送功能开发

ECSHOP运费配送方式仿淘宝地区运费亚博体育手机游戏送功能开发

ECSHOP教程 / ecshop 教程网(www.ecshop119.com) 2015-09-14

ECSHOP运费配送方式仿淘宝地区运费亚博体育手机游戏送功能开发

目录:

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最末处。

/**
?*?取得已安装的配送方式
?*?@return??array???已安装的配送方式*/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());//?END$smarty->assign('unit_list',?get_unit_list());


在“/* 处理商品数据 */”后面,增加POST过来的“shipping_id?”表单值进行赋值?

/*?处理商品数据?*///?LONGHTML?运费亚博体育手机游戏送(新增,更新)$shipping_id?=?empty($_POST['shipping_id'])???'0'?:?intval($_POST['shipping_id']);//?END


最后一步是“插入/更新”商品时,对“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'?)";
????????}????????else
????????{????????????$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')";
????????}
????}????else
????{????????/*?如果有上传图片,删除原来的商品图?*/
????????$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"

??????????运费亚博体育手机游戏送??????????{$lang.select_please}
????????{foreach?from=$shipping_list?item=shipping}????????????????{$shipping.shipping_name}??????????????{/foreach}?{$lang.require_field}

在品牌下面,增加绑定运费亚博体育手机游戏送。效果如下:

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 ?加在需要显示运费的地方

?
??{foreach?from=$regions?key=key?item=value}
?{if?$key?==?0}?至?{$current_region}:?{foreach?from=$value.shippings?item=shipping}
?{$shipping.shipping_name}{$current_price}元??
?{/foreach}???{/if}
?{/foreach}??{foreach?from=$regions?item=value}?{$value.region_name}?{/foreach}


前台显示最终效果图,默认广东省

4、结算流程中,根据配送地址计算运费

4.1 重写“include/lib_order.php”中last_shipping_and_payment函数。多个商品,不同配送方式,调用配送方式ID,以最贵配送方式计算。买家可以找客服进行,运费改价。


/**
?*?获得上一次用户采用的支付和配送方式
?*
?*?@access??public
?*?@return??void?*/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;????//?END
????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);
???}???else
???{???????$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']);//?END



/*?检查收货人信息是否完整?*/
???if?(!check_consignee_info($consignee,?$flow_type))
???{???????/*?如果不完整则转向到收货人信息填写界面?*/
???????ecs_header("Location:?flow.php?step=consignee\n");???????exit;
???}???$_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'];//?END


将themes/default/flow.dwt配送方式隐藏掉

????????{$lang.shipping_method}?????????????????????????????????????????????{$lang.name}??????????????{$lang.describe}??????????????{$lang.fee}??????????????{$lang.free_money}??????????????{$lang.insure_fee}????????????????????????
??????????????????????????????????????????????????????{$shipping.shipping_name}??????????????{$shipping.shipping_desc}??????????????{$shipping.format_shipping_fee}??????????????{$shipping.free_money}??????????????{if?$shipping.insure?neq?0}{$shipping.insure_formated}{else}{$lang.not_support_insure}{/if}????????????????????????
?????????????
??????????????????????????????????????????????????????????{$lang.need_insure}


5、经过上面多处增加/修改,测试一下运行效果。

广东 ?首重10KG?7元,续重0.7元/KG?



转载请注明:ECshop119亚博体育手机游戏送屋-ECshop教程网(全国最专业的ECSHOP插件制作商-专业ECSHOP二次开发)

帮助目录

在线反馈

加ECSHOP亚博体育手机游戏送屋微信语音帮助。

ecshop微信群

与网友交流ECSHOP开发修改。

加入QQ群交流