zblog php的搜索结果页面调用的是单页面,不能自定义,不能分页,丑且不人性化。Search Plus插件可以优化搜索结果页面,支持调用index模板和预留的search模板(前提是主题有),支持搜索词高亮显示,最重要的是列表可以自定义了。
插件安装:
在应用中心搜索Search Plus直接安装。
修改插件:
1、该插件默认只是优化了搜索界面,但是还不能分页,搜索结果分页还需要修改这个插件;
2、编辑zb_users/plugin/SearchPlus/下的include.php文件,找到插件的40行左右,将查询语句变为:
1 2 3 4 5 6 7 8 9 10 11 12 | $pagebar=new Pagebar('{%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行左右修改为:
1 | $zbp->template->SetTags('pagebar',$pagebar); |
懒得找代码的,直接把下面的代码,覆盖include.php文件的所有代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | <?php require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'function' . DIRECTORY_SEPARATOR . 'searchstr.php'; #注册插件 RegisterPlugin("SearchPlus","ActivePlugin_SearchPlus"); function ActivePlugin_SearchPlus() { Add_Filter_Plugin('Filter_Plugin_Search_Begin','SearchPlus_Main'); } function SearchPlus_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 = '<b style=\'color:red\'>' . $q . '</b>'; $articles = array(); $category = new Metas; $author = new Metas; $tag = new Metas; // $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=new Pagebar('{%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($articles as $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 .= '<meta name="robots" content="noindex,follow" />' . "\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(); } function InstallPlugin_SearchPlus() { global $zbp; } function UninstallPlugin_SearchPlus() { global $zbp; } |
修改的代码来自鸟儿的博客