index.hbs
index.hbs 是用于渲染book的handlebars模板。 Markdown 文件被处理为 html,然后注入到该模板中。 如果您想更改书籍的布局或样式,您可能需要稍微修改此模板。 本节是您需要了解的内容。
Data
许多数据通过context
(上下文)暴露给handlebars模板。 在handlebars模板中,您可以使用这些数据。
{{name_of_property}}
以下是公开的属性列表:
-
language 书的语言采用
en
形式,如book.toml
中指定(如果未指定,默认为en
)。 例如在<html lang="{{ language }}">
中使用。 -
title 用于当前页面的标题。 这与
{{chapter_title }}
-{{ book_title }}
相同,除非没有设置book_title
,在这种情况下它只是默认为chapter_title
。 -
book_title 书名,在
book.toml
中指定。 -
chapter_title 当前章节的标题,如
SUMMARY.md
中所列. -
path 从源目录到原始
Markdown
文件的相对路径 -
content 这是渲染过的
Markdown
. -
path_to_root 这是一个只包含
../
的路径,它指向根目录。 由于保留了原始目录结构,因此使用此path_to_root
预先添加相关链接很有用. -
chapters 是一个形式为字典的数组
{"section": "1.2.1", "name": "name of this chapter", "path": "dir/markdown.md"}
包含本书的所有章节。 例如,它用于构建目录(侧边栏)。
Handlebars Helpers
除了您可以访问的属性外,还有一些handlebars helpers可供您使用。
1. toc
toc helper 是这样使用的
{{#toc}}{{/toc}}
并输出看起来像这样的东西,这取决于你的书的结构
<ul class="chapter">
<li><a href="link/to/file.html">Some chapter</a></li>
<li>
<ul class="section">
<li><a href="link/to/other_file.html">Some other Chapter</a></li>
</ul>
</li>
</ul>
如果你想用另一种结构制作目录,你可以访问包含所有数据的章节属性。
目前唯一的限制是您必须使用 JavaScript
而不是使用handlebars helpers来完成。
<script>
var chapters = {{chapters}};
// Processing here
</script>
2. previous / next
previous
和next
的helpers公开了指向前一章和下一章的link
(链接)和name
(名称)属性。
它们是这样使用的
{{#previous}}
<a href="{{link}}" class="nav-chapters previous">
<i class="fa fa-angle-left"></i>
</a>
{{/previous}}
仅在上一章/下一章存在时才会渲染 inner html。 当然,可以根据自己的喜好更改 inner html。
如果您想公开其他属性或helpers,请创建一个创建一个新issue