Hexo提供了诸多插件来增强博客体验,地址http://hexo.io/plugins/。

在博客搬迁的时发现一个生成文章目录的插件,hexo-toc。

hexo-toc为防插件误认标记,文章以下出现的 ttoc 实际为 toc。

使用方法跟显示文章摘要类似,在Markdown中需要显示文章目录的地方添加 。

安装npm install hexo-toc --save

配置

在博客根目录下的 _config.yml 中如下配置:toc:

maxDepth: 3maxDepth 表示目录深度为3,即最多生成三级目录。

好了,现在重启Hexo预览下效果吧。

Toc文章目录

然后你会发现点击目录链接,没反应!

F12查看生成的HTML代码:

Toc生成代码

标题id生成没问题,锚链接中的中文都被转义为 - 了。

看了该插件的issues中已经提到了这个问题,不过好像是没解决。

也没用搜索到其他人有关该插件的使用经验。

没办法,自己动手丰衣足食!

解决锚链接中文被转义

也没什么好的办法,只凭着入门级的Node水平,顺藤摸瓜!

从插件下的index.js开始,一路跟踪代码调试,在感觉可能出现问题的地方console输出内容,最终让我给找到了。

文件位置:Hexo根目录\node_modules\hexo-toc\node_modules\markdown-toc\index.js。

找到如下方法,把原来返回值注释掉,直接 return str; 。function slugify(str, opts){

if (opts && opts.slugify === false) return str;

if (opts && typeof opts.slugify === 'function') {

return opts.slugify(str, opts);

}

str = str.split('.').join('');

//return str.toLowerCase().replace(/[^a-z0-9]/g, '-');

return str;

}

现在重启Hexo后链接都正常可用了。

更好的方法是不改变插件源代码的情况下进行配置。

在以上方法中可以发现,插件有个slugify的配置项,当此项配置为false时即直接return str;。

所以,我们可以到_config.yml添加toc配置:toc:

maxDepth: 3

slugify: false

给Toc添加样式

如本文中文章目录样式,置于文章右侧,又加了个背景等。hexo-toc插件是生成的文章目录最终还是Markdown格式的,最后被Hexo的marked模块解析为HTML。

要添加样式先加选择器。

想通过修改插件代码增加选择器是行不通的,也不能直接在 标记外包裹

因为添加了HTML标签的地方就不会在被marked模块解析。

那就只能在HTML生成之后增加,用js。hexo-toc插件生成文章目录时还在其前后增加了 和 注释。

解决办法就是把这两个注释替换为可控的

找到主题下的文章模版,我的是themes\yilia\layout\_partial\article.ejs。

在其末尾增加代码:

var tocEx = function(el){

var toc = document.querySelector(el), content = toc.innerHTML;

content = content.replace('', '

').replace('', '

');

toc.innerHTML = content;

}('.article-entry');

这样我们就为文章目录外包裹了一对

标签和一个toc类。

再写这个类的样式,放到主题下的相关css文件中。.toc {

float: right;

margin-left: 40px;

padding: 10px 20px;

background: #f1f1f1;

border-radius: 10px;

box-shadow: 0 0 3px #bbb;

}

这些都做完再次重启Hexo,成功!

2016年更新

Hexo 已经有生成文章目录的辅助函数了,使用更方便。我现在博客中的文章目录就是使用辅助函数生成的。

不需要安装额外插件!

不需要在文章中插入标记!

不需要在配置文件添加配置!

仅仅是在你的文章页模版中,插入调用辅助函数的代码即可。

class: 'post-toc',

list_number: true

}) %>

hexo嵌入html传消息的,Hexo添加Toc支持,生成文章目录相关推荐

  1. 利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

    文章目录 ● 前言 ● 注册 Cloudflare ● 添加站点 ● 修改DNS ● 开启 HTTPS ● 重定向强制 HTTPS HTTP(超文本传输协议),是一个基于请求与响应,无状态的,应用层的 ...

  2. hexo简单部署(一次解决hexo测试+上传github问题)

    文章目录 Windows hexo本地部署+测试(上传前准备) git安装 Node.js安装 安装hexo以及本地测试 创建hexo所需文件 SSL证书报错 主题调试 上传GitHub git添加远 ...

  3. hexo博客的yilia主题之添加分类

    文章目录 添加 categories 页面 生成index.md文件 修改index.md文件 添加 categories 到menu菜单 yilia 主题的配置文件 main.826e88.css ...

  4. 用Github Pages+Hexo搭建博客之(八)Hexo博客Next主题添加统计文章阅读量(访问量/浏览量/阅读次数)功能

    [置顶][专栏]用Github Pages+Hexo搭建博客 文章目录 [置顶][专栏][用Github Pages+Hexo搭建博客](https://blog.csdn.net/qq_342439 ...

  5. Hexo+yilia主题实现文章目录和添加视频

    一.说明 也可以点击这里查看此文章 文章目录功能效果可以点击这里查看 视频页面效果可以点击这里查看 粗略实现,有问题可以在下方评论区留言,或者留言板留言 二.文章目录功能 1.添加CSS样式 打开th ...

  6. Hexo建站进阶篇(让hexo进入后台运行)

    Hexo建站进阶篇 此篇着重讲述如何使用hexo进行个人博客编写上传- 没有搭建好环境的童鞋请移动至此 -– Hexo建站总结-个人博客建站基础篇 继上篇开始~: 基础篇搭建完成后的小伙伴肯定有在为如 ...

  7. 手把手教从零开始在GitHub上使用Hexo搭建博客教程(二)-Hexo参数设置

    前言 前文手把手教从零开始在GitHub上使用Hexo搭建博客教程(一)-附GitHub注册及配置介绍了github注册.git相关设置以及hexo基本操作. 本文主要介绍一下hexo的常用参数设置. ...

  8. php个推透传消息,GitHub - Lysice/laravel-getui: Laravel个推的集成包,支持单推/多推/全量推送/透传消息等功能。...

    欢迎使用 Laravel扩展包 laravel-getui 网上有一款shaozeming/laravel-getui,自己在lumen下用,无奈报错依赖出问题,于是自己写了一款. 主要功能 单人推送 ...

  9. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

最新文章

  1. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面
  2. select每门可说大于90分_小女子风雨黑暗无惧 90分全自动反向折叠照明伞
  3. 到底什么是生成式对抗网络GAN?
  4. input 不显示边框_不需要使用JavaScript
  5. .mvn 需要放git上吗_下巴反复长痘,饮食上需要忌口吗?
  6. HDU Problem - 5971 Wrestling Match(染色)
  7. Asp.Net MVC项目通过Git同步到新开发设备上后无法作为网站启动
  8. 计算机应用基础文章 茶的功效,茶文化下的计算机应用基础课程改革-计算机应用论文-计算机论文.docx...
  9. 《像计算机科学家一样思考Python》pdf
  10. 中下游大学毕业如何在大城市和各种985大学生厮杀?
  11. “这辈子不可能打工男子”出狱了,司法所将重点关注,网友:《今瓶没》今日上映!...
  12. 安装-apache skywalking (java 应用性能监控)
  13. sourceinsight4.0安装破解( 内含sublime text配色方案)
  14. .net core快速开发平台,learun自主工作流引擎设计规范
  15. c语言mod是什么意思,mod什么意思中文意思,Mod是什么意思
  16. 如何更改Windows桌面文件夹路径
  17. 关于 IE 浏览器打开时速度过慢的问题
  18. PHP-FPM的PM配置参数说明
  19. HbuilderX 配置eslint规范 问题
  20. codeforces:E. Add Modulo 10【状态压缩 + 找规律】

热门文章

  1. Java的三种代理模式【附源码分析】
  2. 联想拯救者刃7000K 2022 评测
  3. 【看表情包学Linux】man 手册 | 复制文件或目录 | 移动文件和重命名操作 | 查看目标文件内容
  4. 带登录页面的猜数字小游戏
  5. 还在找面试题?不要盲目找了,这份 Java 面试通关手
  6. 打印机管理系统解决方案
  7. 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2)...
  8. PIL库 : 居中对齐写入文本(英文 / 中文)
  9. Kindle资源-史上最全60GB的Kindle技术电子书资源网盘打包下载
  10. 虚幻4皮肤材质_UE4实时虚拟角色材质篇之Skin Material(一)