3.3.1. index.hbs
优质
小牛编辑
132浏览
2023-12-01
index.hbs
是用于渲染书籍的hbs模板。markdown文件被处理为html,然后注入该模板.
如果您想更改图书的布局或样式,您可能需要稍微修改此模板。那下面是你需要知道的。
大量数据通过”上下文”暴露给hbs模板.在hbs模板中,您可以使用以下方式访问此信息
{{name_of_property}}
以下是公开的属性列表:
- language |> 书的语言
en
。例如<code class="language-html">\\<html lang="{{ language }}"></code>
。 - title |> 该书的标题,如
book.toml
中所述 - chapter_title |> 本章的标题,如
SUMMARY.md
下所列 - path |> 源目录中原始markdown文件的相对路径
- content |> 这是渲染的markdown.
- path_to_root |> 这是一条完全包含
../
的路径,这会是从当前文件指向书的根。由于维护了原始目录结构,因此使用此前缀相对链接很有用. - chapters |> 是一个字典数组
{"section": "1.2.1", "name": "name of this chapter", "path": "dir/markdown.md"}
包含本书的所有章节.它用于例如构建目录(侧边栏).
除了您可以访问的属性外,您还可以使用一些hbs帮手.
toc助手就像这样使用
```handlebars
{{#toc}}{{/toc}}
```
并输出看起来像这样的东西,这取决于你的书的结构
```html
<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>
```
如果您想使用其他结构创建一个toc,则可以访问包含所有数据的chapters属性。
目前唯一的限制是您必须使用JavaScript,而不是使用hbs帮助程序。
```html
<script>
var chapters = {{chapters}};
// Processing here
</script>
```
上一个和下一个助手将`link`和`name`属性暴露给前一章和下一章。
就像这样使用
```handlebars
{{#previous}}
<a href="{{link}}" class="nav-chapters previous">
<i class="fa fa-angle-left"></i>
</a>
{{/previous}}
```
只有在前一个/下一个章节存在时,才会渲染内部html。
当然内部html可以根据自己的喜好进行更改。
如果您希望其他属性或帮手,请create a new issue