王志广的个人分享

ecmall物流跟踪

admin发表于2013-12-17  4,799次浏览 标签: 

在ecmall上添加一个物流查询代码,可以让购买者看到商品物流到哪了,同时需要第三方支持,代码简单可以测试,同时也可以进行下一步修改。

首先修改文件Themes/mall/default/my_shipping.form.html
把原来的<input name=”shipping_name”>变成
<select name=”shipping_name” >
<option value=”EMS”<!–{if $shipping.shipping_name == ‘EMS’}–>selected<!–{/if}–>>EMS</option>
<option value=”顺丰”<!–{if$shipping.shipping_name == ‘顺丰’}–>selected<!–{/if}–>>顺丰</option>
<option value=”申通”<!–{if$shipping.shipping_name == ‘申通’}–>selected<!–{/if}–>>申通</option>
<option value=”中通”<!–{if$shipping.shipping_name == ‘中通’}–>selected<!–{/if}–>>中通</option>
<option value=”圆通”<!–{if$shipping.shipping_name == ‘圆通’}–>selected<!–{/if}–>>圆通</option>
<option value=”汇通”<!–{if$shipping.shipping_name == ‘汇通’}–>selected<!–{/if}–>>汇通</option>
<option value=”韵达”<!–{if$shipping.shipping_name == ‘韵达’}–>selected<!–{/if}–>>韵达</option>
</select>

第二步:
在文件include/global.lib.php在最后面添加一个方法
function express_info($order_id,$invoice_no){
//物流信息
$extm_model=&m (‘orderextm’);
$extm_info=$extm_model->get($order_id);
$shipping_model=&m (‘shipping’);
Switch($extm_info[‘shipping_name’]){
Case ‘申通’:  $shipping_en=’shentong’;  Break;
Case ‘圆通’:  $shipping_en=’yuantong’;  Break;
Case ‘汇通’:  $shipping_en=’huitong’;  Break;
Case ‘中通’:  $shipping_en=’zhongtong’;  Break;
Case ‘韵达’:  $shipping_en=’yunda’;  Break;
Case ‘EMS’:  $shipping_en=’ems’;  Break;
}
$id=’E232DC317A582FA7BFBFE6CE2AF8E282′;//到http://www.ickd.cn/api/reg.html申请
$url=’http://api.ickd.cn/?com=’.$shipping_en.’&nu=’.$invoice_no.’&encode=utf8&id=’.$id;
$data=@file_get_contents($url);   //屏蔽此处报错信息
$data=”‘$data'”;
return $data;
}

第三步
修改文件app/buyer_order.app.php里面view方法,在$this->display(‘buyer_order.view.html’);之前加上这一段代码$data=express_info($order_info[‘order_id’],$order_info[‘invoice_no’]);
$this->assign(‘data’,$data);

第四步
修改文件themes/mall/default/buyer_order.view.html
加入js代码
<script language=”javascript”>
var data={$data};
$(function(){
var dataObj=eval(“(“+data+”)”);//转换为json对象
var html='<tr>’;
html+='<th>物流状态:</th>’;
html+='<td>’;
if(dataObj.status>0){
html+='<table width=”520px” cellspacing=”0″ cellpadding=”0″ border=”0″ style=”border-collapse: collapse; border-spacing: 0pt;”>’;
html+='<tr>’;
html+='<td width=”163″ style=”background-color:#e6f9fa;border:1px solid #75c2ef;font-size:14px;font-weight:bold;height:20px;text-indent:15px;”>’;
html+=’时间’;
html+='</td>’;
html+='<td width=”354″ style=”background-color:#e6f9fa;border:1px solid #75c2ef;font-size:14px;font-weight:bold;height:20px;text-indent:15px;”>’;
html+=’地点和跟踪进度’;
html+='</td>’;
html+='</tr>’;
//输出data的子对象变量
$.each(dataObj.data,function(idx,item){
html+='<tr>’;
html+='<td width=”163″ style=”border:1px solid #dddddd;font-size:12px;line-height:22px;padding:3px 5px;”>’;
html+=item.time;// 每条数据的时间
html+='</td>’;
html+='<td width=”354″style=”border:1px solid #dddddd;font-size:12px;line-height:22px;padding:3px 5px;”>’;
html+=item.context;// 每条数据的状态
html+='</td>’;
html+='</tr>’;
});
html+='</table>’;
}else{
//查询不到
html+='<span style=”color:#f00″>很抱歉,’+dataObj.message+'</span>’;
}
html+='</td></tr>’;
$(“#shipping_detail”).append(html);
});
</script>

然后再<h3>{$lang.consigness}</h3>紧接着下面的div里面
添加下面代码
<table id=’shipping_detail’></table><!–物流信息–>

然后就Ok了,可能网站单双引号是中文的,需要改下,有什么不懂可以联系站长。

你可以发表评论引用到你的网站或博客,或通过RSS 2.0订阅这个日志的所有评论。
上一篇:
下一篇:
已有3条评论
adtask
2013 年 12 月 18 日

来踩了,挺好的,加油

ceshi
2013 年 12 月 20 日

ceshi

ceshi
2014 年 1 月 14 日

建议你代码高亮一下。。 看着舒服点

我来说两句

  Ctrl+Enter