尝试了jekyll直接生成toc的方式都失败了,最终通过jquery运行时生成的方式实现目录导航。
参考
步骤实现
添加jquery.toc.min.js
1、下载 https://ndabas.github.io/toc/ 当前是 0.4.0 版本。解压把 jquery.toc.min.js 放到 source/javascripts/libs/ 目录下。
2、在 source/_includes/head.html 文件的 jquery.min.js 下一行引入 jquery.toc.min.js :
1
2
3
4
<script>!window.jQuery && document.write(unescape('%3Cscript src="{{ root_url }}/javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="{{ root_url }}/javascripts/libs/jquery.toc.min.js" type="text/javascript"></script>
使用toc创建目录导航
3、在 source/javascripts 目录下创建 generate-toc.js ,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function generateTOC(insertBefore, heading) {
var container = jQuery("<div id='tocBlock'></div>");
var div = jQuery("<ul id='toc'></ul>");
var content = $(insertBefore).first();
if (heading != undefined && heading != null) {
container.append('<span class="tocHeading">' + heading + '</span>');
}
// div.tableOfContents(content);
div.toc({content: content, headings: "h2,h3,h4"});
container.append(div);
container.insertBefore(insertBefore);
}
并在 source/_includes/custom/head.html 引入该文件:
1
2
3
<script src="{{ root_url }}/javascripts/generate-toc.js" type="text/javascript"></script>
4、运行时调用toc创建目录,在 source/_includes/custom/after_footer.html 添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% if index %}
{% comment %}
No table of contents on the index page.
{% endcomment %}
{% elsif page.toc == true %}
<script type="text/javascript">
jQuery(document).ready(function() {
// Put a TOC right before the entry content.
generateTOC('.entry-content', '目录');
});
</script>
{% endif %}
CSS样式
5、添加样式,在 sass/custom 目录下添加 _screen.scss 文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$toc-bg: #dfdfdf;
$toc-incr: 5px;
div#tocBlock {
border-radius: 10px;
padding: 10px;
box-shadow: 5px 5px 5px #999;
float: right;
font-size: 10pt;
width: 300px;
padding-left: 20px;
padding-right: 10px;
padding-top: 10px;
padding-bottom: 0px;
background: $toc-bg;
border: solid 1px #999999;
margin: 0 0 10px 15px;
.tocHeading {
font-weight: bold;
font-size: 125%;
}
#toc {
background: $toc-bg;
ul {
list-style: disc;
li {
margin-left: $toc-incr !important;
padding: 0 !important;
}
}
}
}
并把该文件添加到 sass/screen.scss :
1
@import "custom/screen";
运行调试
6、删除 source/stylesheets/screen.css
7、预览看效果 rake preview
jekyll生成 查看
{:toc} ,jekyll-toc ,jekyll html 都没试成功,难道是jekyll-2太老了?
–END