适合所有ECSHOP内核的系统,比如小 京东,大商创,等等
1、打开include/lib_common.php,在尾部添加函数
/** * 显示当前城市 * * @return array */ function s_city() { $s_city_id = $_SESSION['s_city_id']; $s_city_name = $_SESSION['s_city_name']; if (empty($s_city_id) && empty($s_city_name)) { $s_city_ip = real_ip(); $url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' . $s_city_ip; $json = file_get_contents($url); $arr = json_decode($json, true); if ($arr['data']['country_id']=="-1" || $arr['data']['city']=="") { $s_city_name = "LAN"; } else { $s_city_name = $arr['data']['city']; $s_city_name = str_replace("区","",str_replace("市","",$s_city_name)); $sql = "SELECT region_id FROM " .$GLOBALS['ecs']->table('region'). " WHERE region_name Like '$s_city_name%'"; $s_city_id = $GLOBALS['db']->getOne($sql); $_SESSION['s_city_id'] = $s_city_id; $_SESSION['s_city_name'] = $s_city_name; } }//echo $s_city_ip; return $s_city_name; }
2、打开themes/[模板目录]/library/page_head.lbi,在合适位置添加:
<div class="city">
<span>{$s_city}</span><em><a href="/s_area.php">选择其它城市</a></em>
</div>
上面的样式南非要自己设,,不多说,,
并在themes/[模板目录]下新建一个模板文件s_area.dwt,模板的核心代码是:
<!-- {foreach from=$aera_list item=aera} -->
<dl class="aera_s">
<dt><a href="#top" class="fh">返回</a><a href="/s_area.php?city_id={$aera.region_id}">{$aera.region_name}</a></dt>
<dd>
<!-- {foreach from=$aera.city item=aeras} -->
<a href="/s_area.php?city_id={$aeras.region_id}">{$aeras.region_name}</a>
<!-- {/foreach} -->
<div class="clear"></div>
</dd>
<div class="clear"></div>
</dl>
<!-- {/foreach} -->
其它的,如模板头,模板尾什么的,根据自身需要修改。
3、在根目录下新建s_area.php文件,核心代码是:
define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); header('Content-type: text/html; charset=' . EC_CHARSET); $s_city_id = $_REQUEST['city_id']; if (empty($s_city_id)) { if ((DEBUG_MODE & 2) != 2) { $smarty->caching = true; } if (!$smarty->is_cached($templates, $cache_id)) { /* 模板赋值 */ assign_template(); $position = assign_ur_here(); $smarty->assign('page_title', $position['title']); // 页面标题 $smarty->assign('show_marketprice', $_CFG['show_marketprice']); $smarty->assign('sort_goods_arr', $sort_goods_arr); // 商品列表 $smarty->assign('categories_pro', get_categories_tree_pro()); // 分类树加强版/* 周改 $smarty->assign('s_city', s_city()); // 城市选择 $smarty->assign('aera_list', s_get_regions()); } $smarty->display("s_area.dwt", $cache_id); } else { $s_city_id = mysql_like_quote($s_city_id); $sql = "SELECT region_name FROM " .$GLOBALS['ecs']->table('region'). " WHERE region_id=$s_city_id"; $s_city_name = $GLOBALS['db']->getOne($sql); if(empty($s_city_name)) { Header("Location: /s_area.php"); } $_SESSION['s_city_id'] = $s_city_id; $_SESSION['s_city_name'] = $s_city_name; clear_all_files($ext = ''); Header("Location: /index.php"); } function s_get_regions($parent) { $aera_list=get_regions(1,1); foreach ($aera_list AS $k => $v) { $aera_list[$k]['city'] = get_regions(2,$v['region_id']); } return $aera_list; }
这个放在s_area.php页面的下面
上面只是主要代码,应该放哪,怎么放,还要根据实际需要!
上面只是主要代码,应该放哪,怎么放,还要根据实际需要!
上面只是主要代码,应该放哪,怎么放,还要根据实际需要!
示范样式:
.city{float:left; padding:35px 15px 0px 15px; width:75px; margin:0px 10px 0px 10px;}
.city span{ font-size:18px; display:block; border-bottom:1px solid #DDD; padding-bottom:8px; margin-bottom:5px; text-align:center;}
.city em{ display:block; text-align:center; color:#999;}
dl.aera_s{ display:block; clear:both; margin-bottom:15px; border:1px solid #DDD;}
dl.aera_s dt { height:30px; padding-left:10px; font-size:14px; font-weight:bold; background:url(../images/title_back.jpg); line-height:30px;}
dl.aera_s dt a.fh{ font-size:12px; color:#999; font-weight:normal; float:right; margin-right:15px;}
dl.aera_s dd { padding:0px 10px; min-height:30px;}
dl.aera_s dd a{ float:left; margin-right:15px; line-height:30px; color:#333;}
dl.aera_s a:hover{ color:#CF010E;}
注意,这个功能只是实现自动识别浏览者所在地区,并且提供地区选择。并不能实现真实的商品、广告按地区划分,,适合一部分客户需求。
这个思路同样也用到微信端,,看怎么用了。。