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

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

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

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

    代碼內(nèi)容

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

    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. 繼續(xù)在functions.php內(nèi)搜索關鍵詞function themeInit

    如果有themeInit這個函數(shù),則在themeInit這個函數(shù)內(nèi)添加下面的代碼

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

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

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

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

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

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

    Typecho教程 – 如何開啟偽靜態(tài)并隱藏index.php?

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發(fā)送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 成人免费区一区二区三区| 国99精品无码一区二区三区 | 中文字幕亚洲一区| 中文字幕一区一区三区| 国产精品成人一区二区三区| 亚洲毛片αv无线播放一区| 国产午夜精品一区二区三区极品| 精品一区二区三区免费视频| 国产精品一区二区毛卡片| 亚洲制服丝袜一区二区三区| 精品视频在线观看你懂的一区| 亚洲日本一区二区一本一道| 久草新视频一区二区三区| 日韩精品一区二区三区老鸦窝| 国产高清一区二区三区视频| 久久亚洲国产精品一区二区| 国产精品视频一区| 国产av熟女一区二区三区| 亚洲AV成人一区二区三区在线看| 亚洲免费一区二区| 日本欧洲视频一区| 国产伦精品一区二区三区视频小说 | 精品国产AV无码一区二区三区| 一区二区传媒有限公司| 无码少妇丰满熟妇一区二区| 夜夜爽一区二区三区精品| 精品国产一区二区三区免费| 91久久精品一区二区| 日本一区二区三区在线网| 国产在线一区二区综合免费视频 | 亚洲一区AV无码少妇电影☆| 中文字幕一区二区三区精彩视频 | 久久一区二区精品| 一区二区三区在线播放| 91在线一区二区| 亚洲美女一区二区三区| 中文字幕精品一区| 国产一区二区女内射| 精品一区二区三区免费观看| 国产精品无码一区二区三区不卡| 国产精品福利区一区二区三区四区|