伊人五月丁香激情另类小说,四虎国产精品永久在线网址,97vx国产精品老女人_播放

0712-2888027 189-8648-0214
微信公眾號

孝感風信網絡科技有限公司微信公眾號

當前位置:主頁 > 技術支持 > DedeCMS > dedecms自動模型聯動搜索

dedecms自動模型聯動搜索

時間:2022-11-11來源:風信官網 點擊: 311次

今天看了一中午的dedecms,改了一個小東西,就是dedecms自動模型的聯動搜索。

大家都知道,好像聯動搜索只能是獨立模型里面的。搞了一會兒我就打算直接用搜索功能的,但是想了一會兒,還是要相信自己能弄出來的。

閑話不多說,Let’s go??!這里我們選擇nativeplace舉例,而且這里的nativeplace我只保留的省份(嘿嘿,工作需要)。

當然是打開list.php了(如果你不知道這個,好吧,我告訴你,聯動搜索是用這個文件的,位置是plus/list.php),大家可以看到有一個if判斷結構

if($tinfos['issystem']==-1){
//others;
include(DEDEINC."/arc.sglistview.class.php");
$lv = new SgListView($tid,$cArr);
}  else {
include(DEDEINC."/arc.listview.class.php");
$lv = new ListView($tid);      //others
}

這里的issystem就是判斷你的模型是不是獨立模型,如果值為-1就是獨立模型了,因為我們是自動模型,所有就在else包含的語句中搞搞了。

可以看到SgListView類中多了一個$cArr參數,這里就是傳遞的nativeplace等參數,所以我也給我們的listview加上參數

然后else包含的語句變為

include(DEDEINC."/arc.listview.class.php");
$nativeplace = ( (empty($nativeplace) || !is_numeric($nativeplace)) ? 0 : $nativeplace );
$cArr['nativeplace'] = $nativeplace;
$lv = new ListView($tid,1,$cArr);

當然了,我們傳了一個$cArr給構造函數,當然構造函數要想辦法接收了。所以我們打開位于include/arc.listview.class.php的文件,然后修改此類的構造函數為(原來的構造函數什么樣子自己看):

function __construct($typeid,$uppage=1,$searchArr=array()) {
//在$this->TotalResult = is_numeric($this->TotalResult)? $this->TotalResult : "";下面加入下面一行
$this->searchArr = $searchArr;
}

然后這里出現了一個$this->searchArr,所以,我們要給類加一個屬性:var $searchArr;(別跟我說你不知道加哪)。

現在我們已經傳過來nativeplace了,即$this->searchArr['nativeplace'],然后我們給查詢語句加一個判斷就大功搞成了。

在大概650行左右有if(ereg(‘hot|click|lastpost’,$orderby))這么一句話,在上面加上:

if(!empty($this->searchArr['nativeplace']))  {
$temp = $this->searchArr['nativeplace'];
$dobila = "$addtable.nativeplace = $temp and";
}  else {
$dobila = "";
}

通過這幾句,我們增加了一個判斷條件$dobila,具體我就不說明了。

講$dobila加入到查詢字符串就OK了,位置在,餓,不好說,這樣吧,在if(ereg(‘hot|click|lastpost’,$orderby))這個條件判斷語句中,我把整段代碼復制過來,大家看看在哪就ok了。

//如果不用默認的sortrank或id排序,使用聯合查詢(數據量大時非常緩慢)

if(ereg('hot|click|lastpost',$orderby))  {
$query = "Select arc.*,tp.typedir,tp.typename,tp.isdefault,tp.defaultname,tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
$addField      from `dede_archives` arc      left join `dede_arctype` tp on arc.typeid=tp.id
$addJoin      where $dobila {$this->addSql} $ordersql limit $limitstart,$row";
}  //普通情況先從arctiny表查出ID,然后按ID查詢(速度非??欤?br /> else  {
$t1 = ExecTime();
$ids = array();
$query = "Select id From `dede_arctiny` arc where {$this->addSql} $ordersql limit $limitstart,$row ";
$this->dsql->SetQuery($query);
$this->dsql->Execute();
while($arr=$this->dsql->GetArray())
{   $ids[] = $arr['id'];      }
$idstr = join(',',$ids);
if($idstr=='')      {
return '';
}      else      {
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,          tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
$addField          from `dede_archives` arc left join `dede_arctype` tp on arc.typeid=tp.id
$addJoin          where $dobila arc.id in($idstr) $ordersql ";
}
$t2 = ExecTime();      //echo $t2-$t1;
}

對了,本來想上網查這個東東來,結果看到幾個付費的,擦,哥自己弄,不用你們,然后我就寫了一個免費的給大家看

熱門關鍵詞: dedecms 自動模型 聯動搜索
欄目列表
推薦內容
熱點內容
展開
伊人五月丁香激情另类小说,四虎国产精品永久在线网址,97vx国产精品老女人_播放