第一步:导入地区文件,dedecms 是把地区以数据的形式保存在文件里。
require_once(DEDEDATA.'/enums/nativeplace.php');
第二步: 判断是否启用地区搜索,有没有传入地区的ID
$nativeplace = ( (empty($nativeplace) || !is_numeric($nativeplace)) ? 0 : $nativeplace ); $nativeplace=GetPlace($nativeplace);
第三步:处理传入的地区ID,这个是获取子类的方法
function GetPlace($nat)
{
global $em_nativeplaces;
$place='';
if($nat%500==0){
foreach($em_nativeplaces as $eid=>$em){
$place.=$eid.","; //获取二级,如果顶级分类就输出该分类下的所有类别
}
} else{
if(strpos($eid,".")!==false&&$eid>500) //当有点的时候是三级分类,没点的就是二级分类
{
$place.=$nat.",";
}else{
foreach($em_nativeplaces as $eid=>$em)
{
if(strpos($eid,$nat,0)!==false)
{
$place.=$eid.",";
}
}
}
}
$place=substr($place,0,strlen($place)-1);
return $place;
}第四步:在搜索查询的时候传入查询出来的地区Id
if(!empty($this->nativeplace)){
$this->addSql .=" and sp.nativeplace in({$this->nativeplace})";
}
if(!empty($this->q)){
$this->addSql .="and ch.title like '%{$this->q}%' ";
}
if(!empty($this->types)){
$this->addSql .=" and arc.typeid IN ({$this->types}) ";
}这里就是查询的条件,传入地区搜索的sql 当中就可以了,这样就可以试下地区查询的方法。