Ecshop在下订单到最后一步的时候,会再次显示收货人地址,但只显示末尾的详细地址,并不能显示前面的国家、省、市、县,这常常让顾客误以为自己的地址没有写全,于是返回去改,可是确认改好了回来最后一步又不显示省市县,非常影响购物体验,而且这个问题直到现在的ecshop2.7.3最新版也没解决,以下我们就通过修改ecshop解决这个BUG (以Ecshop 2.7.3为例)。
1、打开根目录的flow.php,定位到约487-493行。
/* 检查收货人信息是否完整 */
if (!check_consignee_info($consignee, $flow_type))
{
/* 如果不完整则转向到收货人信息填写界面 */
ecs_header("Location: flow.php?step=consignee\n");
exit;
}
2、在其下面增加如下代码:
/* 取得国家 */
$country = $db->getRow("SELECT region_name FROM " . $GLOBALS['ecs']->table('region') . " WHERE region_id = ".$consignee['country']);
$smarty->assign('country', $country);
/* 取得省 */
$province = $db->getRow("SELECT region_name FROM " . $GLOBALS['ecs']->table('region') . " WHERE region_id = ".$consignee['province']);
$smarty->assign('province', $province);
/* 取得市 */
$city = $db->getRow("SELECT region_name FROM " . $GLOBALS['ecs']->table('region') . " WHERE region_id = ".$consignee['city']);
$smarty->assign('city', $city);
/* 取得县 */
$district = $db->getRow("SELECT region_name FROM " . $GLOBALS['ecs']->table('region') . " WHERE region_id = ".$consignee['district']);
$smarty->assign('district', $district);
3、修改模板文件flow.dwt,定位到显示详细地址的地方(因为不同的模板差异很大,所以在此无法指出在哪一行),一般为:{$consignee.address|escape},在它前面补充以下代码 {$country.region_name} {$province.region_name} {$city.region_name} {$district.region_name}
通过以上修改,可以完美解决ecshop详细地址不显示国家、省、市、县的问题。