怎么非插件實現文章置頂功能? – 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 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 九九无码人妻一区二区三区| 精品人无码一区二区三区| 国产精品特级毛片一区二区三区 | 中文字幕亚洲综合精品一区| 亚洲视频一区二区三区四区| 亚洲欧洲日韩国产一区二区三区 | 国产情侣一区二区| 日本精品视频一区二区三区 | 91在线视频一区| 中文乱码字幕高清一区二区| 国产成人一区二区动漫精品| aⅴ一区二区三区无卡无码| 岛国无码av不卡一区二区| 久久精品亚洲一区二区三区浴池| 日本无码一区二区三区白峰美 | 久久精品黄AA片一区二区三区| 亚洲一区精品视频在线| 国产日韩精品一区二区三区| 亚洲色大成网站www永久一区| 91一区二区三区四区五区| 波多野结衣一区在线| 亚洲一区二区三区四区在线观看| 亚洲欧美日韩中文字幕在线一区| 成人在线视频一区| 亚洲AV无码一区二区三区人| 国产一区二区在线观看麻豆| 日韩高清国产一区在线| 日韩电影在线观看第一区| 亚洲视频一区在线| 三级韩国一区久久二区综合 | 国产精品538一区二区在线| 久久久91精品国产一区二区三区| 韩国精品一区二区三区无码视频| 一区二区三区国产| 视频一区二区三区免费观看 | 日韩一区二区三区在线| 久久精品视频一区| 一区二区三区四区无限乱码| 亚洲精品精华液一区二区| 国产亚洲一区二区精品| 一区二区福利视频|