hexo-blog-encrypt目录消失
使用 hexo-blog-encrypt 对文章进行加密,解密后发现目录消失,本文将介绍如何通过修改 NexT 主题的源码来实现加密文章的目录显示。
本教程针对 hexo 下的 NexT 主题
原因
从插件的 github issues
中我找到了相关的讨论:解密后目录不会更新
· Issue #16 · D0n9X1n/hexo-blog-encrypt
原因是:
加密的时候,
post.content
会变成加密后的串,所以原来的TOC
生成逻辑就会针对加密后的内容。 所以这边我只能把原来的内容存进post.origin
字段。
优化代码
打开
/thems/next/layout/_micro/sidebar.njk
文件,进行如下修改
找到包含 set toc = toc(page.content...
的代码段,将其中的内容替换为如下代码:
1 | {%- if display_toc %} |
上述代码的作用是当有加密时,从 page.origin 中读取目录信息。
找到包含 <div class="post-toc-wrap sidebar-panel">
的代码段,将其修改为:
1 | <!--noindex--> |
上述代码的原理是:在文章加密的前提下,通过将目录部分加入到一个
不可见的div
中来实现 隐藏目录
的效果。在 hexo-blog-encrypt/lib/hbe.js
源码中,我们可以看到解密后会修改 id
值为
toc-div
的元素为 display:inline
来显示内容。
参考
本文参考以下文章,在此致以诚挚谢意!