怎么非插件實現文章置頂功能? - Typecho教程

    在Typecho主題開發的過程中,置頂功能是一項很實用的功能,這次在重寫主題時,看到別人有的置頂文章這種功能,于是自己參考 Sticky插件 寫了這種方法,添加在自己主題里

    在Typecho主題開發的過程中,置頂功能是一項很實用的功能,這次在重寫主題時,看到別人有的置頂文章這種功能,于是自己參考 Sticky插件 寫了這種方法,添加在自己主題里。頁希望能幫助到各位T主題開發者。

    跟 Sticky插件 一樣

    在 index.php 的 $this->title(); 前面加上 $this->sticky();可出現這段 html.
    例: <h2 class="title"><a href="<?php $this->permalink() ?>"><?php $this->sticky(); $this->title() ?></a></h2>

    代碼放在主題下index.php中:

    /** 文章置頂 */
    $sticky = '1'; //置頂的文章id,多個用|隔開
    if($sticky){
        $sticky_cids = explode('|',$sticky); //分割文本
        $sticky_html = "<span style='color:red'>[置頂] </span>"; //置頂標題的 html
    
        $db = Typecho_Db::get();
        $pageSize = $this->options->pageSize;
        $select1 = $this->select()->where('type = ?', 'post');
        $select2 = $this->select()->where('type = ? && status = ? && created < ?', 'post','publish',time());
    
        //清空原有文章的列隊
        $this->row = [];
        $this->stack = [];
        $this->length = 0;
    
        $order = '';
        foreach($sticky_cids as $i => $cid) {
            if($i == 0) $select1->where('cid = ?', $cid);
            else $select1->orWhere('cid = ?', $cid);
            $order .= " when $cid then $i";
            $select2->where('table.contents.cid != ?', $cid); //避免重復
        }
        if ($order) $select1->order(null,"(case cid$order end)"); //置頂文章的順序 按 $sticky 中 文章ID順序
        if ($this->_currentPage == 1) foreach($db->fetchAll($select1) as $sticky_post){ //首頁第一頁才顯示
            $sticky_post['sticky'] = $sticky_html;
            $this->push($sticky_post); //壓入列隊
        }
    
        $uid = $this->user->uid; //登錄時,顯示用戶各自的私密文章
        if($uid) $select2->orWhere('authorId = ? && status = ?',$uid,'private');
    
        $sticky_posts = $db->fetchAll($select2->order('table.contents.created', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize));
        foreach($sticky_posts as $sticky_post) $this->push($sticky_post); //壓入列隊
        $this->setTotal($this->getTotal()-count($sticky_cids)); //置頂文章不計算在所有文章內
    }

    相關推薦

    怎么非插件實現文章置頂功能? - Typecho教程-Npcink
    怎么非插件實現文章置頂功能? - Typecho教程-Npcink

    怎么用純代碼添加算術驗證碼功能? - Typecho教程

    怎么非插件實現文章置頂功能? - Typecho教程-Npcink
    怎么非插件實現文章置頂功能? - Typecho教程-Npcink

    怎么免插件開啟評論@小尾巴 - Typecho教程

    Typecho

    Polyhedron - 簡潔大方的雙欄自適應Typecho博客主題

    2020-8-15 22:49:32

    Typecho

    Mozz Plus - 響應式晝夜雙色簡約Typecho主題

    2020-8-15 23:09:24

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 亚洲啪啪综合AV一区| 国产视频一区二区| 视频一区视频二区日韩专区| 2022年亚洲午夜一区二区福利 | 中文字幕不卡一区| 精品少妇ay一区二区三区| 国产SUV精品一区二区四 | 午夜影院一区二区| 一区二区三区免费高清视频| 国产高清在线精品一区| 国产AV国片精品一区二区| 精品视频一区二区三三区四区 | 三上悠亚亚洲一区高清| 亚洲日韩中文字幕无码一区| 日本一区二区三区精品中文字幕| 中文字幕日韩欧美一区二区三区| 久久国产精品视频一区| av无码一区二区三区| 国产亚洲综合精品一区二区三区| 亚洲一区中文字幕在线观看| 一区二区三区影院| 日本不卡一区二区视频a| 成人免费区一区二区三区| 免费无码一区二区三区蜜桃| 色一情一乱一伦一区二区三区 | 国产精品久久久久一区二区三区| 久久一区不卡中文字幕| 日本一区二区不卡在线| 亚洲国产成人精品无码一区二区 | 日本一区高清视频| 亚洲国产成人久久一区WWW | 亚洲一区AV无码少妇电影☆| 国产A∨国片精品一区二区| 久久久精品日本一区二区三区| 亚洲无人区一区二区三区| 青青青国产精品一区二区| 韩国一区二区三区| 亚洲乱色熟女一区二区三区丝袜| 亚洲熟妇av一区二区三区下载| 精品人伦一区二区三区潘金莲| 久久精品无码一区二区三区不卡|