怎么非插件實現文章置頂功能? - 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怡红院一区二区三区| 无码av免费毛片一区二区| 亚洲国产精品一区第二页| 无码喷水一区二区浪潮AV| 亚洲图片一区二区| 日韩精品无码一区二区三区AV | 高清一区二区三区| 国产精品资源一区二区| 无码人妻少妇色欲AV一区二区| 波多野结衣一区视频在线| 国产免费一区二区视频| 三上悠亚一区二区观看| AV无码精品一区二区三区宅噜噜| bt7086福利一区国产| 一区二区三区高清视频在线观看| 精品国产一区二区三区香蕉事| 久久精品一区二区三区不卡| 人妻无码一区二区视频| 中文字幕在线一区二区三区| 国产一区在线视频| 中文字幕日韩丝袜一区| 中文字幕AV无码一区二区三区| 国产日本亚洲一区二区三区| 亚洲av不卡一区二区三区| 无码人妻一区二区三区在线视频| 3d动漫精品啪啪一区二区免费| 人妻久久久一区二区三区 | 免费日本一区二区| 91精品国产一区| 国产一区二区三区不卡在线观看 | 亚洲国产成人一区二区三区| 亚洲无圣光一区二区| 亚洲国产AV无码一区二区三区| 国产91精品一区| 国产主播一区二区| 欧美激情国产精品视频一区二区| 一区二区三区四区在线视频| 少妇人妻精品一区二区三区| 免费无码一区二区三区蜜桃大|