dedecms按地区,一级,二级,三级搜索

第一步:导入地区文件,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 当中就可以了,这样就可以试下地区查询的方法。

本文永久地址:http://www.huanghaiping.com/article/40.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部