怎么非插件實現文章置頂功能? – 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教程

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

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 日韩一区二区电影| 中文字幕在线无码一区二区三区| 一区二区中文字幕| 亚洲AV成人精品一区二区三区| 日本一区二区三区在线视频观看免费| 午夜视频久久久久一区 | 亚洲国产精品无码久久一区二区| 最新中文字幕一区| 国产成人精品日本亚洲专一区| 成人国内精品久久久久一区| 国产高清一区二区三区视频| 麻豆AV天堂一区二区香蕉| 精品一区精品二区制服| 日韩精品无码一区二区三区免费 | 国产精品福利一区二区| 亚洲av午夜福利精品一区| 538国产精品一区二区在线| 一区二区日韩国产精品| 福利一区福利二区| 精品伦精品一区二区三区视频| 国产一区二区三区在线看片| 日韩在线观看一区二区三区| 精品人妻无码一区二区色欲产成人| 99精品国产一区二区三区不卡| 亚洲av无码一区二区乱子伦as| 另类一区二区三区| 中文字幕视频一区| 亚洲一区二区三区在线网站| 五十路熟女人妻一区二区| 国产一区二区三区乱码在线观看| 国产乱人伦精品一区二区在线观看| 亚洲AV无码片一区二区三区| 国模无码一区二区三区 | 国产亚洲一区二区在线观看| 日本成人一区二区| 亚洲av无码一区二区三区天堂古代 | 一区国严二区亚洲三区| 国产综合一区二区在线观看| 少妇激情av一区二区| 日本无卡码一区二区三区| 波多野结衣精品一区二区三区|