index.hbs

index.hbs是用于渲染书籍的hbs模板。markdown文件被处理为html,然后注入该模板.

如果您想更改图书的布局或样式,您可能需要稍微修改此模板。那下面是你需要知道的。

Data

大量数据通过”上下文”暴露给hbs模板.在hbs模板中,您可以使用以下方式访问此信息

  1. {{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 |> 是一个字典数组
  1. {"section": "1.2.1", "name": "name of this chapter", "path": "dir/markdown.md"}

包含本书的所有章节.它用于例如构建目录(侧边栏).

Handlebars 帮手

除了您可以访问的属性外,您还可以使用一些hbs帮手.

1. toc

  1. toc助手就像这样使用
  2. ```handlebars
  3. {{#toc}}{{/toc}}
  4. ```
  5. 并输出看起来像这样的东西,这取决于你的书的结构
  6. ```html
  7. <ul class="chapter">
  8. <li><a href="link/to/file.html">Some chapter</a></li>
  9. <li>
  10. <ul class="section">
  11. <li><a href="link/to/other_file.html">Some other Chapter</a></li>
  12. </ul>
  13. </li>
  14. </ul>
  15. ```
  16. 如果您想使用其他结构创建一个toc,则可以访问包含所有数据的chapters属性。
  17. 目前唯一的限制是您必须使用JavaScript,而不是使用hbs帮助程序。
  18. ```html
  19. <script>
  20. var chapters = {{chapters}};
  21. // Processing here
  22. </script>
  23. ```

2. previous / next

  1. 上一个和下一个助手将`link``name`属性暴露给前一章和下一章。
  2. 就像这样使用
  3. ```handlebars
  4. {{#previous}}
  5. <a href="{{link}}" class="nav-chapters previous">
  6. <i class="fa fa-angle-left"></i>
  7. </a>
  8. {{/previous}}
  9. ```
  10. 只有在前一个/下一个章节存在时,才会渲染内部html
  11. 当然内部html可以根据自己的喜好进行更改。

如果您希望其他属性或帮手,请create a new issue