广州传奇网络

地址:广州市天河区东圃大马路富华楼C座

电话:13808825895

邮箱:gz020wbs@163.com

QQ:1564443073

网址:http://www.020wbs.com/

首页 > 二次开发Ecshop二次开发 > ECSHOP如何手动输入收货地址

二次开发Ecshop二次开发

二次开发Ecshop二次开发

ECSHOP如何手动输入收货地址

做外贸的朋友有的涉及省、市众多,不想在后台逐个添加,想要实现国家和省市由选择的方式改为手动输入文本框的
方式。下面就介绍一下ECSHOP开发过程中的ECSHOP实现收货国家省市由选择下拉菜单改为手动输入文本框的实现方法。

修改ECSHOP默认的数据库中存储省市国家的表内容数据,就要先修改数据库的字段。
将ecs_order_info表中的对应字段修改为字符串型:

alter table  `ecs_order_info` modify province varchar(255) NOT NULL DEFAULT '';
alter table  `ecs_order_info` modify city varchar(255) NOT NULL DEFAULT '';
alter table  `ecs_order_info` modify district varchar(255) NOT NULL DEFAULT '';

修改ecs_user_address表中的字段。

alter table  `ecs_user_address` modify province varchar(255) NOT NULL DEFAULT '';
alter table  `ecs_user_address` modify city varchar(255) NOT NULL DEFAULT '';
alter table  `ecs_user_address` modify district varchar(255) NOT NULL DEFAULT '';

下面就可以将ecshop中的国家、省份和城市改为手动输入文本框了。
修改的提交数据和读取数据的时候所得到的值,省份的索引值到对应表中查询找到对应的省份并予以输出,
现在,就要直接读取这个值,并给予输出。

在表单提交页:

flow.php中,我们将保存收货人信息代码中的

'district'      => empty($_POST['district'])   ? '' : intval($_POST['province'],

改为

'district'      => empty($_POST['district'])   ? '' : $_POST['province'],

这样就把省份去的值直接写入数据库,修改国家(这里将district改为国家)和城市,这样就把用户输入的
值直接写入了数据库运用的是同样的方法。

修改用户中心的对应字段,把整数值转换的函数去掉。修改订单确认的页面,页面的用户信息确认,需要修改其中的显示方式。

要将Consigee中的对应字段加入。
比如我们把地址写成下面的样式:

{$consignee.address|escape}, {$consignee.city}, {$consignee.province}, {$consignee.district}

这样就可以从前面调用城市、省份、国家的信息了。

最后需要修改网站的后台中的订单信息页面,这个页面同样需要按照前台的显示方式来修改,找到
admin/order.php中的代码:

 $sql = "SELECT concat(IFNULL(c.region_name, ''), '  ', IFNULL(p.region_name, ''), " .
                "'  ', IFNULL(t.region_name, ''), '  ', IFNULL(d.region_name, '')) AS region " .
            "FROM " . $ecs->table('order_info') . " AS o " .
                "LEFT JOIN " . $ecs->table('region') . " AS c ON o.country = c.region_id " .
                "LEFT JOIN " . $ecs->table('region') . " AS p ON o.province = p.region_id " .
                "LEFT JOIN " . $ecs->table('region') . " AS t ON o.city = t.region_id " .
                "LEFT JOIN " . $ecs->table('region') . " AS d ON o.district = d.region_id " .
            "WHERE o.order_id = '$order[order_id]'";

改为:

$sql="SELECT concat(city, ' ', province, ' ', district) AS region " . "FROM ". $ecs->table('order_info') ."WHERE order_id = '$order[order_id]'";

这就实现了从order_info表中读取来的地址信息直接显示的功能。