Z-BLOG PHP版本默认搜索是无法分页的,APP中心有一个Search Plus插件,此插件可以优化搜索界面,但是同样不能分页。但是我们可以修改一下这个插件。
找到插件的40行左右,将查询语句变为:$pagebar=newPagebar('{%host%}search.php?{q='.$q.'}&{page=%page%}',false);
$pagebar->PageCount=$zbp->displaycount;
$pagebar->PageNow=(int)GetVars('page','GET')==0?1:(int)GetVars('page','GET');
$pagebar->PageBarCount=$zbp->pagebarcount;
$articles=$zbp->GetArticleList(
'*',
$w,
array('log_PostTime'=>'DESC'),array(($pagebar->PageNow-1)*$pagebar->PageCount,$pagebar->PageCount),
array('pagebar'=>$pagebar),
null
);
找到插件的70行左右修改为:$zbp->template->SetTags('pagebar',$pagebar);
最后附上我修改后的文件,我还修改了其他的一些小bug,直接替换原插件的include.php即可。<?php
requiredirname(__FILE__).DIRECTORY_SEPARATOR.'function'.DIRECTORY_SEPARATOR.'searchstr.php';
#注册插件
RegisterPlugin("SearchPlus","ActivePlugin_SearchPlus");
functionActivePlugin_SearchPlus(){
Add_Filter_Plugin('Filter_Plugin_Search_Begin','SearchPlus_Main');
}
functionSearchPlus_Main(){
global$zbp;
foreach($GLOBALS['Filter_Plugin_ViewSearch_Begin']as$fpname=>&$fpsignal){
$fpreturn=$fpname();
if($fpsignal==PLUGIN_EXITSIGNAL_RETURN){
$fpsignal=PLUGIN_EXITSIGNAL_NONE;return$fpreturn;
}
}
if(!$zbp->CheckRights($GLOBALS['action'])){Redirect('./');}
$q=trim(htmlspecialchars(GetVars('q','GET')));
$qc=''.$q.'';
$articles=array();
$category=newMetas;
$author=newMetas;
$tag=newMetas;
//$type='post-search';
$zbp->title=$zbp->lang['msg']['search'].'"'.$q.'"';
$template=$zbp->option['ZC_INDEX_DEFAULT_TEMPLATE'];
if(isset($zbp->templates['search'])){
$template='search';
}
$w=array();
$w[]=array('=','log_Type','0');
if($q){
$w[]=array('search','log_Content','log_Intro','log_Title',$q);
}else{
Redirect('./');
}
if(!($zbp->CheckRights('ArticleAll')&&$zbp->CheckRights('PageAll'))){
$w[]=array('=','log_Status',0);
}
$pagebar=newPagebar('{%host%}search.php?{q='.$q.'}&{page=%page%}',false);
$pagebar->PageCount=$zbp->displaycount;
$pagebar->PageNow=(int)GetVars('page','GET')==0?1:(int)GetVars('page','GET');
$pagebar->PageBarCount=$zbp->pagebarcount;
$articles=$zbp->GetArticleList(
'*',
$w,
array('log_PostTime'=>'DESC'),array(($pagebar->PageNow-1)*$pagebar->PageCount,$pagebar->PageCount),
array('pagebar'=>$pagebar),
null
);
foreach($articlesas$article){
$intro=preg_replace('/[\r\n\s]+/','',trim(SubStrStartUTF8(TransferHTML($article->Content,'[nohtml]'),$q,170)).'...');
$article->Intro=str_ireplace($q,$qc,$intro);
$article->Title=str_ireplace($q,$qc,$article->Title);
}
$zbp->header.=''."\r\n";
$zbp->template->SetTags('title',$zbp->title);
$zbp->template->SetTags('articles',$articles);
//$zbp->template->SetTags('type',$type);
$zbp->template->SetTags('page',1);
$zbp->template->SetTags('pagebar',$pagebar);
if(isset($zbp->templates['search'])){
$zbp->template->SetTemplate($template);
}else{
$zbp->template->SetTemplate('index');
}
foreach($GLOBALS['Filter_Plugin_ViewList_Template']as$fpname=>&$fpsignal){
$fpreturn=$fpname($zbp->template);
}
$zbp->template->Display();
RunTime();
die();
}
functionInstallPlugin_SearchPlus(){
global$zbp;
}
functionUninstallPlugin_SearchPlus(){
global$zbp;
}