Soso - 搜索增強Typecho插件

    這款typecho插件可以增強Typecho的搜索功能,很是實用,還可以根據分類來搜索,很方便,是一款值得tupecho主題開發者一試的typecho插件

    功能介紹

    搜索模式:有常規搜索和僅搜索文章標題兩種模式。

    搜索過濾:可以設置一些分類,讓其不被搜索到。

    搜索高亮:搜索結果頁面,文章標題和縮略內容中的關鍵字高亮顯示。

    注意:縮略內容使用<?php $this->excerpt(140, '...'); ?>來截取的并不會高亮,因為這個地方沒有插件接口,可以將這個函數換成插件內置的方法<?php $this->excerpts($this); ?>,并且在插件設置里設置截取長度。也可以這樣寫個判斷

    <?php $all = Typecho_Plugin::export(); if(array_key_exists('Soso', $all['activated'])): ?>
    <?php $this->excerpts($this); ?>//插件啟動就調用插件的這個方法
    <?php else: ?>
    <?php $this->excerpt(140, '...'); ?>//插件沒啟動就調用默認方法
    <?php endif; ?>

    使用說明

    下載后將soso文件夾傳到typecho目錄下,然后啟動插件,打開插件設置,根據文字提示設置即可。

    插件升級操作說明

    禁用舊版插件,刪除舊版插件文件夾,然后上傳最新版插件,啟動插件設置插件即可

    高級玩法

    typecho按分類搜索文章

    Soso - 搜索增強Typecho插件

    之前我寫的soso搜索增強插件其實已經能夠根據分類進行搜索內容了,不過需要模板上進行配合,比如我們搜索分類id2620下關于typecho的文章,需要傳遞分類id的參數給cat,讓插件獲取,比如這個鏈接https://qqdie.com/search/typecho/?cat=2620,插件會獲取到2620,然后根據它來按分類搜索文章內容。

    那么問題來了,模板搜索表單怎么傳遞cat參數
    typecho默認的搜索結構直接加個input進行傳遞,如下:

    <form method="post" action="<?php $this->options->siteUrl(); ?>" role="search">
    <input type="hidden" name="cat"  value="2620">
    <input type="text" name="s" placeholder="Search...">
    <button type="submit">Search</button>
    </form>

    HTML

    經過測試并沒有用,因為在處理搜索的過程中,typecho的默認只接受name="s"傳遞的內容。

    我的解決方案就是跳過typecho默認的搜索處理函數,然后自己寫。

    1,跳過默認搜索處理

    把上述代碼中的name="s"改成name="ss",跳過typecho默認的搜索處理函數。代碼如:

    <form method="post" action="<?php $this->options->siteUrl(); ?>" role="search">
    <input type="hidden" name="cat"  value="2620">
    <input type="text" name="ss" placeholder="Search...">
    <button type="submit">Search</button>
    </form>

    HTML

    2,自己寫搜索處理函數

    functions.php模板文件里加入

    function themeInit($archive)
    {
    if($archive->request->isPost() && isset($archive->request->ss)){
    so($archive);//判斷為post請求,并且有參數ss,啟用so函數
    }}
    function so($obj){
    $url=$obj->options->index;
    if (Helper::options()->rewrite==0){$url=Helper::options()->rootUrl.'/index.php/';}
            /** 處理搜索結果跳轉 */
            if (isset($obj->request->ss)) {
                $filterKeywords = $obj->request->filter('search')->ss;//獲取搜索詞
     $cat = $obj->request->filter('search')->cat;//獲取分類id
                /** 跳轉到搜索頁 */
                if (NULL != $filterKeywords) {
                    $obj->response->redirect(Typecho_Router::url('search',
                    array('keywords' => urlencode($filterKeywords)),$url)."?cat=".$cat);//設置跳轉地址
                }
            }
    }

    PHP

    3,啟動soso插件

    下載soso插件并啟用插件,測試效果,有效果就可以進行下一步驟了。

    4,重寫翻頁按鈕地址

    上面的操作完成后,你會發現翻頁按鈕的鏈接并不攜帶cat參數,也就是說一旦翻頁了,這個按分類搜索就失效了。所以我們需要給翻頁按鈕追加參數,我最初采用的是js追加參數,后來發現可以直接重寫分類按鈕的鏈接,所以就采用php修改按鈕鏈接的方式追加參數了。

    在搜索結果的模板文件中增加以下代碼即可:

    <?php
    global $can;//定義全局變量,方便下面獲取
    $cat=intval($this->request->cat);//獲取cat
    if($cat>0){$can='?cat='.$cat;}else{$can="";}
    class Typecho_Widget_Helper_PageNavigator_Classic extends Typecho_Widget_Helper_PageNavigator
    {
        public function prev($prevWord = 'PREV')
        {
            //輸出上一頁
            if ($this->_total > 0 && $this->_currentPage > 1) {
                echo '<a class="prev" href="' . str_replace($this->_pageHolder, $this->_currentPage - 1, $this->_pageTemplate) . $this->_anchor . $GLOBALS['can'] . '">'
                . $prevWord . '</a>';
            }
        }
        public function next($nextWord = 'NEXT')
        {
            //輸出下一頁
            if ($this->_total > 0 && $this->_currentPage < $this->_totalPage) {
                echo '<a class="next" title="" href="' . str_replace($this->_pageHolder, $this->_currentPage + 1, $this->_pageTemplate) . $this->_anchor . $GLOBALS['can'] . '">'
                . $nextWord . '</a>';
            }
        }
    }
    ?>

    PHP

    上述代碼就是在上一頁/下一頁的翻頁按鈕后面追加cat參數,追加好了,就完美了。

    5,完善

    步驟1中的代碼只是簡單的傳遞了一個分類id,并不適合實際中使用,可以改為如下:

    <form method="post" action="<?php $this->options->siteUrl(); ?>" role="search">
    <select name="cat">
    <option value="0" selected>全部</option>
    <option value="2619">Typecho全部</option>
    <option value="2620">Typecho主題</option>
    <option value="2621">Typecho插件</option>
    <option value="2626">Typecho教程</option>
    <option value="2618">博客文章</option>
    </select>
    <input type="text" name="ss" placeholder="Search...">
    <button type="submit">Search</button>
    </form>

    HTML

    使用select能夠比較方便的選擇分類進行搜索,根據需要select里面的內容可以使用循環輸出所有分類。

    下載權限
    查看
    • 免費下載
      評論并刷新后下載
      登錄后下載
    • {{attr.name}}:
    您當前的等級為
    登錄后免費下載登錄 小黑屋反思中,不準下載! 評論后刷新頁面下載評論 支付以后下載 請先登錄 您今天的下載次數(次)用完了,請明天再來 支付積分以后下載立即支付 支付以后下載立即支付 您當前的用戶組不允許下載升級會員
    您已獲得下載權限 您可以每天下載資源次,今日剩余
    Typecho

    Links - Typecho友情鏈接插件

    2020-2-16 2:37:00

    Typecho

    itheme - 簡潔單欄Typecho主題

    2020-2-17 22:23:18

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 老鸭窝毛片一区二区三区| 熟妇人妻AV无码一区二区三区| chinese国产一区二区| 亚洲AV本道一区二区三区四区| 日韩在线视频一区| 少妇无码一区二区二三区| 日本精品视频一区二区三区| 国产亚洲3p无码一区二区| 日韩有码一区二区| 精品人妻系列无码一区二区三区| 亚洲国产一区二区三区| 无码中文字幕人妻在线一区二区三区| 无码乱人伦一区二区亚洲一| 水蜜桃av无码一区二区| 国产成人高清精品一区二区三区| 精品91一区二区三区| 国产一区二区三区樱花动漫| 美女福利视频一区二区 | 午夜福利一区二区三区在线观看| 丰满岳乱妇一区二区三区| 亚洲AV永久无码精品一区二区国产| 色屁屁一区二区三区视频国产| 亚洲另类无码一区二区三区| 无码一区二区三区亚洲人妻| 国产一区二区三区日韩精品| 日韩一区二区精品观看| 亚洲AⅤ视频一区二区三区| 亚洲性日韩精品一区二区三区| 日韩一区二区三区视频| 中文日韩字幕一区在线观看| 五月婷婷一区二区| 国产无码一区二区在线| 中文字幕在线不卡一区二区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 2021国产精品一区二区在线| 亚洲av无码天堂一区二区三区| 免费视频精品一区二区| 精品视频在线观看一区二区| 国内精品视频一区二区三区 | 日韩在线视频一区| 国产精品亚洲专一区二区三区|