咨询热线:18076568990、0755-25823180

ShoWT 商城系统开发经验分享 第八篇 二次开发之分地区开发

1957 7 Sunboy1215 发表于 2015-1-16 13:56:48
最近碰到一个基于ShoWT商城系统二次开发成支持多城市运营的项目,客户其中一个需求就是总平台可以开设各城市分站,IP地址系统自动识别,游客或会员只能查看某一城市分站的商品店铺等信息,而不是全国的信息,各城市分站拥有自己的会员与店铺。开发过程与大家分享一下。

        第1步:搭建一个城市运营商使用的后台

        首先创建一个城市表city,主要字段包括:城市ID(主键),城市名称、城市二级名称、状态、城市管理员登录账号和密码。系统管理员可以对这个表进行CURD操作,也就是管理城市表。
      

       然后建立各城市分站后台,如命名后台目录为city_manage,复制现有admin目录中的入口文件index.php到city_manage目录,定义项目名称define('ProjectName','city_manage');,其它代码不需要改动。然后初化城市后台程序及目录结构(如control、include、language、templates)及所必需的文件(PHP文件、图片、样式文件)。
      

      然后完成登录、欢迎界面及修改密码功能,这三个功能相关的文件从admin目录复制相关文件稍做修改即可,不需要重新开发。当然城市运营商管员需要管理的信息还有很多,如店铺、商品、会员、订单、结算、统计等,但这些不是本次介绍的重点,不再赘述。

       第2步:IP来源分析与定位

       从网上下载一下较全的IP地址库,笔者这里下载的是QQIP地址库,IP地址信息都存放在qqwry.dat中,可以使用ip.exe工具进行解压为txt文件,查看里面的内容。
      

      然后使用PHP程序解析qqwry.dat文件,定位到哪个城市,百度一下“php 解析 qqwry.dat”,网上已经有了相关的程序大家可以参考,TP也提供了相关开源的解析IP类,有兴趣的可以学习一下。
     

      注意:网上下载的qqwry.dat是GBK编码(至少本人下载的是),如果项目中是UTF-8编码,需要进行转码才可以。
对qqwry.dat的解析,网上也已经有了C语言版的php扩展qqwry.so,据说效率比PHP高6到10倍(本人未测试),大家可以尝试一下。具体使用方法百度一下就可以了。

IP分析的程序可以放到入口文件里,也可以放到框架里,程序分析流程如下图:

210432lnhcxyhbyb6kznzx_conew1.jpg

主要代码示例参考如下:
  1. require(BasePath.'/framework/libraries/iplocation.php');
  2. $ip = new IpLocation(BasePath.'/data/area/qqwry.dat');
  3. $area = $ip->getlocation();    //$area内容如:河北省[font=微软雅黑]廊坊[/font]市
  4. $domain = require(BasePath.'/data/area/domain.php');
  5. //如果IP有定位并且该城市已开通,定位到该城市
  6. foreach ($domain as $k=>$v) {
  7. if (strpos($area,$k) !== false){
  8.     $dcity  = $domain[$k];
  9.     define('CITY_ID',$city[$dcity]['id']);
  10.     break;
  11. }
  12. }
复制代码
domain.php是已开通城市的数组,内容如:
  1. <?php
  2. //对应关系为 城市名称 => 域名
  3. return array('天津'=>'tj','北京'=>'bj','廊坊'=>'lf');
  4. ?>
复制代码
将城市标识ID除记录到cookie外,在PHP中使用define定义成常量,在前台显示商品与店铺等信息的SQL中,将该常量加入到检索条件,这样便实现了每个城市显示每个城市的信息。


alan509 发表于 2015-8-27 22:48:57
这个有插件吗,可以分享下
bjhengte 发表于 2015-7-5 20:25:13
这个好,有插件吗
chengxx 发表于 2015-3-10 10:37:16
你做二次开发不?  做一个产品配送区域的二次开发   有意向的话跟我联系 我的qq1009609996  叫我的时候注明原因
ml207 发表于 2015-1-17 06:18:44
@sun boy,能找你做shopwt二次开发吗?付费的。qq:2414015124
 楼主| Sunboy1215 发表于 2015-1-16 19:49:03
ml207 发表于 2015-1-16 19:47
我正需要这个东西

ml207 发表于 2015-1-16 19:47:15
我正需要这个东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 今日
    0
  • 主题
    1507

推荐贴子

联系我们

产品及方案咨询:18076568990、0755-25823180

电子邮箱:web@shopwt.com、客服微信:shopwtcom

公司地址:深圳市罗湖区人民南路3002号国贸大厦B座1608楼

  • 官方公众号

  • 微信客服