Typecho教程 - 如何免插件為主題集成文章目錄功能

    通過這個目錄也能讓訪客大概的知道這篇文章的主要內容,大大提升了訪客的體驗。那么這一次的Typecho教程就教大家如何實現這個有趣的功能吧

    一些Typecho主題集成了文章目錄功能,能在文章旁邊列出一級級的目錄,方便訪客閱讀比較長的文章,而且,通過這個目錄也能讓訪客大概的知道這篇文章的主要內容,大大提升了訪客的體驗。那么這一次的Typecho教程就教大家如何實現這個有趣的功能吧。

    Typecho教程 - 如何免插件為主題集成文章目錄功能
    背景圖片
    • 代碼來源: https://www.offodd.com/76.html

    代碼內容

    不過畢竟是WP下的東西,要移植到Typecho還是要改一改的,下面直接放出修改后的代碼吧,使用方法繼續往下看。

    function createCatalog($obj) {    //為文章標題添加錨點
        global $catalog;
        global $catalog_count;
        $catalog = array();
        $catalog_count = 0;
        $obj = preg_replace_callback('/<h([1-6])(.*?)>(.*?)<\/h\1>/i', function($obj) {
            global $catalog;
            global $catalog_count;
            $catalog_count ++;
            $catalog[] = array('text' => trim(strip_tags($obj[3])), 'depth' => $obj[1], 'count' => $catalog_count);
            return '<h'.$obj[1].$obj[2].'><a name="cl-'.$catalog_count.'"></a>'.$obj[3].'</h'.$obj[1].'>';
        }, $obj);
        return $obj;
    }
    
    function getCatalog() {    //輸出文章目錄容器
        global $catalog;
        $index = '';
        if ($catalog) {
            $index = '<ul>'."\n";
            $prev_depth = '';
            $to_depth = 0;
            foreach($catalog as $catalog_item) {
                $catalog_depth = $catalog_item['depth'];
                if ($prev_depth) {
                    if ($catalog_depth == $prev_depth) {
                        $index .= '</li>'."\n";
                    } elseif ($catalog_depth > $prev_depth) {
                        $to_depth++;
                        $index .= '<ul>'."\n";
                    } else {
                        $to_depth2 = ($to_depth > ($prev_depth - $catalog_depth)) ? ($prev_depth - $catalog_depth) : $to_depth;
                        if ($to_depth2) {
                            for ($i=0; $i<$to_depth2; $i++) {
                                $index .= '</li>'."\n".'</ul>'."\n";
                                $to_depth--;
                            }
                        }
                        $index .= '</li>';
                    }
                }
                $index .= '<li><a href="#cl-'.$catalog_item['count'].'">'.$catalog_item['text'].'</a>';
                $prev_depth = $catalog_item['depth'];
            }
            for ($i=0; $i<=$to_depth; $i++) {
                $index .= '</li>'."\n".'</ul>'."\n";
            }
        $index = '<div id="toc-container">'."\n".'<div id="toc">'."\n".'<strong>文章目錄</strong>'."\n".$index.'</div>'."\n".'</div>'."\n";
        }
        echo $index;
    }

    使用方法

    1. 把上面的代碼放到主題文件functions.php最后一行之前

    2. 繼續在functions.php內搜索關鍵詞function themeInit

    如果有themeInit這個函數,則在themeInit這個函數內添加下面的代碼

    if ($archive->is('single')) {
        $archive->content = createCatalog($archive->content);
    }

    如果沒有themeInit這個函數,則在functions.php最后一行之前添加下面的代碼

    function themeInit($archive) {
        if ($archive->is('single')) {
            $archive->content = createCatalog($archive->content);
        }
    }

    3. 最后在需要輸出文章目錄的位置調用<?php getCatalog(); ?>即可

    這是通用的方法,具體到每個人使用時,可以根據自己的需求修改,不再贅述。

    除了給主題增加功能,希望這一篇Typecho教程也能幫助到您:

    Typecho教程 - 如何免插件為主題集成文章目錄功能-Npcink
    Typecho教程 - 如何免插件為主題集成文章目錄功能-Npcink

    Typecho教程 - 如何開啟偽靜態并隱藏index.php?

    Typecho

    UpyunFile 新版又拍云 - Typecho插件

    2019-5-11 9:54:15

    Typecho

    Initial - 主題使用文檔

    2019-5-11 13:19:28

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 日本精品夜色视频一区二区 | 99精品一区二区三区| www.亚洲一区| 国产高清在线精品一区小说 | 高清国产AV一区二区三区| 久久精品一区二区三区四区| 国产一区二区三区韩国女主播| 免费看一区二区三区四区| 国产视频一区二区| 亚洲熟女综合色一区二区三区| 久久精品无码一区二区三区| 一区二区三区四区在线观看视频| 精品少妇ay一区二区三区| 无码人妻品一区二区三区精99 | 亚洲一区二区三区丝袜| 亚洲AV无码一区东京热久久 | 国产欧美色一区二区三区| 亚洲爆乳精品无码一区二区三区 | 中文字幕色AV一区二区三区| 国产亚洲综合一区二区三区| 另类ts人妖一区二区三区| 亚洲一区二区三区深夜天堂| 精品一区精品二区制服| 国产短视频精品一区二区三区| 日韩爆乳一区二区无码| 亚洲一区二区久久| 精品一区二区三区自拍图片区| 乱子伦一区二区三区| 亚洲福利一区二区精品秒拍| 国产精品夜色一区二区三区 | 中文字幕一区二区日产乱码| 国产福利一区二区在线视频 | 日韩精品一区二区三区毛片 | 日本美女一区二区三区| 一区在线免费观看| 国产精品一区二区三区免费| 又硬又粗又大一区二区三区视频| 天堂国产一区二区三区| 亚洲中文字幕一区精品自拍| 相泽南亚洲一区二区在线播放| 一区二区三区无码高清视频|