后台=>商品列表=>其他信息=》选择免运费情况。如果该商品勾选上了。则该商品在购买的时候,不会产生运费。
2:如果计算ecshop的商品免除运费。
includes/lib_order.php的order_fee()函数。
$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 0"
$shipping_count = $GLOBALS['db']->getOne($sql)
$total['shipping_fee'] = ($shipping_count == 0 AND $weight_price['free_shipping'] == 1) ?0 : shipping_fee($shipping_info['shipping_code'],$shipping_info['configure'], $weight_price['weight'], $total['goods_price'], $weight_price['number'])
在你购买的时候,他首先检测该商品是否免除运费如果该商品免除运费的话,他就直接可以免除运费,但是有个缺点,如果该商品和其他不免除运费的商品一起购买的话,他就产生运费了。结构很简单。shipping_count == 0 AND $weight_price['free_shipping'] == 1,这里已经表示很明确了。
正常的ecshop购买流程应该是这样的。就是如果ecshop的购买流程里面,只要有一个商品是免除运费的,那么所有的商品都应该是免除运费的。
我们可以按照下面函数来处理运费的过程。
function has_free(){
global $db
global $ecs
$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` = 'package_buy'"
$shipping_count = $GLOBALS['db']->getOne($sql)
if($shipping_count){
$sql = 'SELECT goods_id from ' . $GLOBALS['ecs']->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code`= 'package_buy'"
$ids = $db->getCol($sql)
if($ids){
foreach($ids as $k =>$v){
$sql2 = "select g.is_shipping from ".$ecs->table('package_goods')." p , ".$ecs->table('goods')." g where g.goods_id = p.goods_id and p.package_id = $v"
$res = $db->getCol($sql2)
if(in_array(1,$res)){
$tsing = 1
continue
}
}
if($tsing ==1){
return 1
}else{
$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 1"
$shipping_count = $GLOBALS['db']->getOne($sql)
if($shipping_count){
return 1
}
return 0
}
}else{
return 0
}
}else{
$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('cart') . " WHERE `session_id` = '" . SESS_ID. "' AND `extension_code` != 'package_buy' AND `is_shipping` = 1"
$shipping_count = $GLOBALS['db']->getOne($sql)
if($shipping_count){
return 1
}
}
return 0
}
一.打开includesmodulesshipping文件夹,把sto_express.php复制多一份,重名为tt_express.php;二.打开tt_express.php,ctrl+F调出“查找替换框”将所有“sto_express.php”替换成“tt_express.php” ,所有“申通快递”替换成“天天快递”;
三.打开languageszh_cnshipping文件夹,把sto_express.php复制多一份,重命名为tt_express.php;
四.再将打开我们重命名好的tt_express.php,ctrl+F调出“查找替换框”将所有 “sto_express.php”替换成“tt_express.php” ,所有“申通快递”替换成“天天快递”(说明:步骤3.4是创建中文语言包,如果需要创建英文和繁体的语言包,请自行打开languagesen_us shipping和languageszh_twshipping进行步骤3.4的 *** 作)
五.Includes/inc_constant.php第237行加上相应如“|tt_express”
==原程序为:
/* 配送方式 */
define('SHIP_LIST', 'cac|city_express|ems|flat|fpd|post_express|post_mail|presswork|sf_express|sto_express|yto|zto')
==修改后程序为:
define('SHIP_LIST', 'cac|city_express|ems|flat|fpd|post_express|post_mail|presswork|sf_express|sto_express| tt_express|yto|zto')
六. admintemplatesshipping_area_info.ht第12行加上相应如“|| $shipping_area.shipping_code =='tt_express'”
==原程序为:
{if $shipping_area.shipping_code =='ems' || $shipping_area.shipping_code =='yto' || $shipping_area.shipping_code =='zto' || $shipping_area.shipping_code =='sto_express' || $shipping_area.shipping_code =='post_mail' || $shipping_area.shipping_code =='sf_express' || $shipping_area.shipping_code =='post_express' }
==修改后程序为:
{if $shipping_area.shipping_code =='ems' || $shipping_area.shipping_code =='yto' || $shipping_area.shipping_code =='zto' || $shipping_area.shipping_code =='sto_express' || $shipping_area.shipping_code =='post_mail' || $shipping_area.shipping_code =='sf_express' || $shipping_area.shipping_code =='tt_express' ||$shipping_area.shipping_code =='post_express' }
七. 最后进入后台更新网站缓存,完成插件添加。
这个要看具体的需求,比如你是否需要做物流状态跟踪,如果要,现有的ecshop功能是不能满足的,必须要开发新的插件来实现。如果只是需要在订单显示物流公司名称,计算不同区域的运费的话,那就可以通过以下两步来实现:
一、修改配送方式的其中一种的名称和描述;
二、增加国外的地区数据,ecshop通常只有中国的省市数据,如果你是要覆盖美国的话,就需要增加美国的州区数据了。地区数据在“系统设置-地区列表”里可以增加。
完成了这两步之后,就可以在配送方式里设置不同地区的运费了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)