现在要在ecmall的基础上添加地区登陆,就是根据你选择的地区来显示出来相应的商品,把地区id存在一个session中,然后整站根据你的session_id去取商品,这样就实现了想要结果
这里只做区 选择显示,在登陆旁边显示地区。top文件
在app/frontend.base.php入口文件中添加代码,当然也可以在别的入口文件中
修改 frontendApp 下面的__construct方法为
function __construct() {
$this->FrontendApp();
//地区登陆进口
$region = & m('region');//实例化region表
$get_region = $region->get_list($parent_id=246);//因为这里表中对应的山东id是246,而我的项目中只做山东的,你也可以改成中国的id
$this->assign('get_region', $get_region);//将结果赋值给变量get_region
//print_r($get_region);
empty($_SESSION['city_id']) ? $region_id = 247 : $region_id = $_SESSION['city_id'];//如果你刚登陆进来的话默认地区济南的id,可以自己修改
if($_SERVER['REQUEST_METHOD'] == 'GET') {
if(!empty($_REQUEST['RegionId'])) {
$region_id = intval($_REQUEST['RegionId']);
}
}
$_SESSION['city_id'] = $region_id;
$region_name = $region->get_region($region_id);
$this->assign('region_name', $region_name); //把地区id存入session并且将地区名称赋值给region_name变量
}
由于获取根据地区id获取子地区model中没有这个方法
所以要在includes/models/region.model.php中
//根据region_id获取地区名称
function get_region($region_id)
{
$kinds = $this->db->getOne("SELECT region_name FROM {$this->table} WHERE region_id='{$region_id}'");
return $kinds;
}
以上是php部分
下面修改 top.html 和 width/tp.html
添加jquery效果
//地区选择
$("#ChangCity span").click(function(){
$("#ShowCity").animate({width:'800px', height:'500px'},"slow");
});
$("#CloseShow").click(function(){
$("#ShowCity").animate({width:'0px', height:'0px'},"slow");
});
});
<!--地区选择 start-->
切换地区:<span id="ChangCity" style="position:relative;"><span style="cursor:pointer">{$region_name}</span>
<div id="ShowCity" style="position:absolute; border:1px solid #ccc; z-index:999; display:none; left:30px; width:100px; height:auto; overflow:hidden; background:#fff;">
<div style="float:right; width:30px; height:30px; cursor:pointer; font-weight:bold; color:#666" id="CloseShow">关闭</div>
<div style="clear:both; padding:10px;">
<!--{foreach from=$get_region item=val}-->
<a href="index.php?RegionId={$val.region_id}">{$val.region_name}</a>
<!--{/foreach}-->
</div>
</div>
</span>
<!--地区选择 end-->
保存后看效果,可以正常选择地区和保存地区session值,现在还不能根据地区显示该地区下面的商品