网站开发 · 2025年4月26日

Zen-cart Geo-zone扩展

Zen-cart Geo-zone扩展插图

这里主要扩展了geo_zones这个表进行扩展,后台文件对应admin/geo_zones.php

1 2 3 4 5 6 7 8 9 10 //加入如下代码防止错误 /////////////////////// $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-zone扩展插图1

其它改动就是调整查询插入更新时的相关的SQL,不过在新添加或编辑Geo_Zone时,需要下拉出Geo_Zone_Type:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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,然后可以安装规则计算运费。这个扩展意义就在这里了。