今天,在测试的ecshop的时候发现,用户在注册新会员后,在会员中心添加了收货人信息,但是在提交订单的时候,收货人信息还是需要填写,在订单提交的界面填写好收货人信息后,下次提交订单,才不用再次填写,今天就来修复这个问题,其实修改的代码特别简单,
打开includes/lib_order.php页面
搜索: /* 取默认地址 */ 将
$sql = “SELECT ua.*”.
” FROM ” . $GLOBALS[‘ecs’]->table(‘user_address’) . “AS ua, “.$GLOBALS[‘ecs’]->table(‘users’).’ AS u ‘.
” WHERE u.user_id=’$user_id’ AND ua.address_id = u.address_id”;
替换为:
$sql = “SELECT * FROM ” . $GLOBALS[‘ecs’]->table(‘user_address’) .” WHERE user_id = ‘$user_id’ LIMIT 1″;
如果是地址比较多,想显示最新添加的地址的话,就替换为:
$sql = “SELECT * FROM ” . $GLOBALS[‘ecs’]->table(‘user_address’) .” WHERE user_id = ‘$user_id’ ORDER BY address_id DESC LIMIT 1″;
就可以了。直接从user_address中读取该用户id的第一条地址。是不是特别简单啊。
不过此方法有个缺陷,虽然能读取用户在会员中心提交的收货地址,但是在提交之后,会有邮箱等几个字段的信息缺失,补救方法就是将会员中心填写的地址簿所有的字段都在订单提交填写地址的地方调出来,这样,信息不会确实,而且在后台订单详情里面,地址显示的也非常完善,绝对是最好的方法了。