Zencart Geo-zone表扩展

Zen-cart扩展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类型的分区:
Zen-cart新表geo_zones_type

其它改动就是调整查询插入更新时的相关的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,然后可以安装规则计算运费。这个扩展意义就在这里了。

posted @ 2016-09-10 09:18  九维  阅读(299)  评论(0编辑  收藏  举报