花褪残红青杏小。燕子飞时,绿水人家绕。

Z-Blog PHP实现搜索分页

ZBLOG教程 十五楼的鸟儿 31682浏览 1评论

Z-BLOG PHP版本默认搜索是无法分页的,APP中心有一个Search Plus插件,此插件可以优化搜索界面,但是同样不能分页。但是我们可以修改一下这个插件。


找到插件的40行左右,将查询语句变为:

$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行左右修改为:

    $zbp->template->SetTags('pagebar',$pagebar);

最后附上我修改后的文件,我还修改了其他的一些小bug,直接替换原插件的include.php即可。

<?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'] . ' &quot;' . $q . '&quot;';

    $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;

}


转载请注明:鸟儿博客 » Z-Blog PHP实现搜索分页

与本文相关的文章

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)