Zencart Geo-zone表扩展
这里主要扩展了geo_zones这个表进行扩展,后台文件对应admin/geo_zones.php
//加入如下代码防止错误 /////////////////////// $cnt = $db->metaColumns(TABLE_GEO_ZONES); if(!isset($cnt['COST'])){ $db->Execute("ALTER TABLE ".TABLE_GEO_ZONES." ADD cost VARCHAR( 256 ) NULL DEFAULT ''"); } if(!isset($cnt['GEO_ZONE_TYPE_ID'])){ $db->Execute("ALTER TABLE ".TABLE_GEO_ZONES." ADD geo_zone_type_id int(11) NOT NULL DEFAULT '0'"); } ///////////////////////
cost字段主要用来保存这个区的费率,geo_zone_type_id用来对geo_zone进行分类,标识这个区是哪种类型,比如DHL或Fedex类型的分区:
其它改动就是调整查询插入更新时的相关的SQL,不过在新添加或编辑Geo_Zone时,需要下拉出Geo_Zone_Type:
zen_draw_pull_down_menu('geo_zone_type_id', zen_get_zone_types("请选择Geo Zone Type") //zen_get_zone_types()函数 function zen_get_zone_types($default = '') { global $db; $zone_class_array = array(); if ($default) { $zone_class_array[] = array('id' => '', 'text' => $default); } $zone_class = $db->Execute("select geo_zone_type_id, geo_zone_type_name from " . TABLE_GEO_ZONES_TYPE . " order by geo_zone_type_name"); while (!$zone_class->EOF) { $zone_class_array[] = array('id' => $zone_class->fields['geo_zone_type_id'], 'text' => $zone_class->fields['geo_zone_type_name']); $zone_class->MoveNext(); } return $zone_class_array; }
这个就可以在后台管理Geo_Zone对应的费率(cost)了。每个Geo_Zone里面包含了一个或多个国家,它们对应一个费率,再由Geo_Zone_Type知道是哪种Geo_Zone,然后可以安装规则计算运费。这个扩展意义就在这里了。