昨天网上找单位,一家单位问我会不会ecshop,直接“凉凉”。于是来研究下吧。首先安装很简单,在官网下载即可,这里有个小技巧,官网下载需要登录,但是仔细查看URL会发现下载地址直接给出了。所以直接截取就好了。下载地址如下:
ECSHOP3.0下载地址:http://update.shopex.com.cn/version/program/ECShop/download_ecshop_300.php
ECSHOP2.7下载地址:http://download.ecshop.com/2.7.3/ECShop_V2.7.3_UTF8_release1106.rar
ECSHOP安装
下载完之后是一个压缩包,直接全部解压到你的网站根目录即可。然后访问你的网站URL。会显示如下。
image这里是显示安装必须的一些信息,点击下一步开始配置系统。然后按要求填写后会出现如下图。
image全部成功以后,会出现下面这张需要注册云起的图,实际这个让你登录只是为了对接一些信息。
image这里我们只是研究只用,所以不需要,不用管。直接在访问你的网站URL。这时候就会出现你的ECSHOP了。
image上图就是你的ECSHOP了。
ECSHOP配送插件开发
网上没有找到文档,于是只能大致看一下怎么写,如有错误还望指出。首先在后台找到配送插件的位置。
image这里可以看到有一个第三方写的插件叫“中通快递”、我们先要找到它的实现代码。对着卸载或者安装或者设置区域等等位置,点击鼠标右键点击审查元素。可以看到如下JavaScript代码:
卸载
可以看到有一个实现php:shipping.php
。这个文件位于:admin/shipping.php
。看一下这个的实现代码:
首先要遍历:$modules = read_modules('../includes/modules/shipping');
这个文件。所以我们可以参考一下其中已经编写完毕的代码(下面是中通的):
/**
* ECSHOP 中通速递插件
* ============================================================================
* * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecshop.com;
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: liubo $
* $Id: zto.php 17217 2011-01-19 06:29:08Z liubo $
*/
$shipping_lang = ROOT_PATH.'languages/' .$GLOBALS['_CFG']['lang']. '/shipping/zto.php';
if (file_exists($shipping_lang))
{
global $_LANG;
include_once($shipping_lang);
}
/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{
include_once(ROOT_PATH . 'languages/' . $GLOBALS['_CFG']['lang'] . '/admin/shipping.php');
$i = (isset($modules)) ? count($modules) : 0;
/* 配送方式插件的代码必须和文件名保持一致 */
$modules[$i]['code'] = 'zto';
$modules[$i]['version'] = '1.0.0';
/* 配送方式的描述 */
$modules[$i]['desc'] = 'zto_desc';
/* 是否支持保价 */
$modules[$i]['insure'] = '2%';
/* 配送方式是否支持货到付款 */
$modules[$i]['cod'] = false;
/* 插件的作者 */
$modules[$i]['author'] = '蓝色黯然';
/* 插件作者的官方网站 */
$modules[$i]['website'] = 'http://www.ecshop.com';
/* 配送接口需要的参数 */
$modules[$i]['configure'] = array(
array('name' => 'item_fee', 'value'=>15), /* 单件商品配送的价格 */
array('name' => 'base_fee', 'value'=>10), /* 1000克以内的价格 */
array('name' => 'step_fee', 'value'=>5), /* 续重每1000克增加的价格 */
);
/* 模式编辑器 */
$modules[$i]['print_model'] = 2;
/* 打印单背景 */
$modules[$i]['print_bg'] = '/images/receipt/dly_zto.jpg';
/* 打印快递单标签位置信息 */
$modules[$i]['config_lable'] = 't_shop_province,' . $_LANG['lable_box']['shop_province'] . ',116,30,296.55,117.2,b_shop_province||,||t_customer_province,' . $_LANG['lable_box']['customer_province'] . ',114,32,649.95,114.3,b_customer_province||,||t_shop_address,' . $_LANG['lable_box']['shop_address'] . ',260,57,151.75,152.05,b_shop_address||,||t_shop_name,' . $_LANG['lable_box']['shop_name'] . ',259,28,152.65,212.4,b_shop_name||,||t_shop_tel,' . $_LANG['lable_box']['shop_tel'] . ',131,37,138.65,246.5,b_shop_tel||,||t_customer_post,' . $_LANG['lable_box']['customer_post'] . ',104,39,659.2,242.2,b_customer_post||,||t_customer_tel,' . $_LANG['lable_box']['customer_tel'] . ',158,22,461.9,241.9,b_customer_tel||,||t_customer_mobel,' . $_LANG['lable_box']['customer_mobel'] . ',159,21,463.25,265.4,b_customer_mobel||,||t_customer_name,' . $_LANG['lable_box']['customer_name'] . ',109,32,498.9,115.8,b_customer_name||,||t_customer_address,' . $_LANG['lable_box']['customer_address'] . ',264,58,499.6,150.1,b_customer_address||,||t_months,' . $_LANG['lable_box']['months'] . ',35,23,135.85,392.8,b_months||,||t_day,' . $_LANG['lable_box']['day'] . ',24,23,180.1,392.8,b_day||,||';
return;
}
class zto
{
/*------------------------------------------------------ */
//-- PUBLIC ATTRIBUTEs
/*------------------------------------------------------ */
/**
* 配置信息
*/
var $configure;
/*------------------------------------------------------ */
//-- PUBLIC METHODs
/*------------------------------------------------------ */
/**
* 构造函数
*
* @param: $configure[array] 配送方式的参数的数组
*
* @return null
*/
function zto($cfg = array())
{
foreach ($cfg AS $key=>$val)
{
$this->configure[$val['name']] = $val['value'];
}
}
/**
* 计算订单的配送费用的函数
*
* @param float $goods_weight 商品重量
* @param float $goods_amount 商品金额
* @param float $goods_number 商品件数
* @return decimal
*/
function calculate($goods_weight, $goods_amount, $goods_number)
{
if ($this->configure['free_money'] > 0 && $goods_amount >= $this->configure['free_money'])
{
return 0;
}
else
{
@$fee = $this->configure['base_fee'];
$this->configure['fee_compute_mode'] = !empty($this->configure['fee_compute_mode']) ? $this->configure['fee_compute_mode'] : 'by_weight';
if ($this->configure['fee_compute_mode'] == 'by_number')
{
$fee = $goods_number * $this->configure['item_fee'];
}
else
{
if ($goods_weight > 1)
{
$fee += (ceil(($goods_weight - 1))) * $this->configure['step_fee'];
}
}
return $fee;
}
}
/**
* 查询发货状态
*
* @access public
* @param string $invoice_sn 发货单号
* @return string
*/
function query($invoice_sn)
{
$str = '
'action="http://www.zto.cn/bill.asp" name="queryForm_' .$invoice_sn. '" target="_blank">'.
'","\n",$invoice_sn). '" />'.
'' .$invoice_sn. ''.
''.
''.
'';
return $str;
}
/**
* 计算保价费用
* 保价费不低于100元,保价金额不得高于10000元,保价金额超过10000元的,超过的部分无效
* @access public
* @param int $goods_amount 保价费用
* @param int $insure 保价比例
*
* @return void
*/
function calculate_insure ($goods_amount, $insure)
{
if ($goods_amount > 10000)
{
$goods_amount = 10000;
}
$fee = $goods_amount * $insure;
if ($fee < 100)
{
$fee = 100;
}
return $fee;
}
}
?>
基本上只是填充一些信息,定义一个类对象。但是其中有一些表单位置定位信息这个教大家如何找一下,还是在shipping里面找,下面有一个操作数据库的代码。
//保存
$sql = "UPDATE " .$ecs->table('shipping'). " SET print_bg = '$src' WHERE shipping_id = '$shipping_id'";
$res = $db->query($sql);
可以看到在shipping这个表里面的config_lable里面的数据。
image其中就有定位坐标,但是有些中文是用的变量代替的,这些变量如下:
[lable_box] => Array
(
[shop_country] => 网店-国家
[shop_province] => 网店-省份
[shop_city] => 网店-城市
[shop_name] => 网店-名称
[shop_district] => 网店-区/县
[shop_tel] => 网店-联系电话
[shop_address] => 网店-地址
[customer_country] => 收件人-国家
[customer_province] => 收件人-省份
[customer_city] => 收件人-城市
[customer_district] => 收件人-区/县
[customer_tel] => 收件人-电话
[customer_mobel] => 收件人-手机
[customer_post] => 收件人-邮编
[customer_address] => 收件人-详细地址
[customer_name] => 收件人-姓名
[year] => 年-当日日期
[months] => 月-当日日期
[day] => 日-当日日期
[order_no] => 订单号-订单
[order_postscript] => 备注-订单
[order_best_time] => 送货时间-订单
[pigeon] => √-对号
)
获取这些变量的方法很简单,只要打印$_LANG就可以。打印方法如下:
echo print_r($_LANG);
将上述代码插入到配送插件里面的任意位置即可。
image也可以访问我的个人博客查看:https://www.iwonmo.com
网友评论