2015-08-05 20:36:21 +02:00
|
|
|
# index.hbs
|
2015-08-05 18:28:59 +02:00
|
|
|
|
2015-08-05 20:36:21 +02:00
|
|
|
`index.hbs` is the handlebars template that is used to render the book.
|
|
|
|
|
The markdown files are processed to html and then injected in that template.
|
2015-08-05 18:28:59 +02:00
|
|
|
|
2015-08-05 20:36:21 +02:00
|
|
|
If you want to change the layout or style of your book, chances are that you will
|
|
|
|
|
have to modify this template a little bit. Here is what you need to know.
|
2015-08-05 18:28:59 +02:00
|
|
|
|
2015-08-05 20:36:21 +02:00
|
|
|
## Data
|
2015-08-05 18:28:59 +02:00
|
|
|
|
|
|
|
|
A lot of data is exposed to the handlebars template with the "context".
|
|
|
|
|
In the handlebars template you can access this information by using
|
|
|
|
|
|
|
|
|
|
```handlebars
|
|
|
|
|
{{name_of_property}}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Here is a list of the properties that are exposed:
|
|
|
|
|
|
|
|
|
|
- ***language*** Language of the book in the form `en`. To use in <code class="language-html">\<html lang="{{ language }}"></code> for example.
|
|
|
|
|
At the moment it is hardcoded.
|
2016-12-23 08:17:04 +00:00
|
|
|
- ***title*** Title of the book, as specified in `book.toml`
|
2016-12-31 10:34:15 -08:00
|
|
|
- ***chapter_title*** Title of the current chapter, as listed in `SUMMARY.md`
|
2015-08-05 18:28:59 +02:00
|
|
|
|
|
|
|
|
- ***path*** Relative path to the original markdown file from the source directory
|
|
|
|
|
- ***content*** This is the rendered markdown.
|
|
|
|
|
- ***path_to_root*** This is a path containing exclusively `../`'s that points to the root of the book from the current file.
|
|
|
|
|
Since the original directory structure is maintained, it is useful to prepend relative links with this `path_to_root`.
|
|
|
|
|
|
|
|
|
|
- ***chapters*** Is an array of dictionaries of the form
|
|
|
|
|
```json
|
|
|
|
|
{"section": "1.2.1", "name": "name of this chapter", "path": "dir/markdown.md"}
|
|
|
|
|
```
|
|
|
|
|
containing all the chapters of the book. It is used for example to construct the table of contents (sidebar).
|
|
|
|
|
|
2015-08-05 20:36:21 +02:00
|
|
|
## Handlebars Helpers
|
2015-08-05 18:28:59 +02:00
|
|
|
|
|
|
|
|
In addition to the properties you can access, there are some handlebars helpers at your disposal.
|
|
|
|
|
|
|
|
|
|
1. ### toc
|
|
|
|
|
|
|
|
|
|
The toc helper is used like this
|
|
|
|
|
|
|
|
|
|
```handlebars
|
|
|
|
|
{{#toc}}{{/toc}}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
and outputs something that looks like this, depending on the structure of your book
|
|
|
|
|
|
|
|
|
|
```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>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you would like to make a toc with another structure, you have access to the chapters property containing all the data.
|
|
|
|
|
The only limitation at the moment is that you would have to do it with JavaScript instead of with a handlebars helper.
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<script>
|
|
|
|
|
var chapters = {{chapters}};
|
|
|
|
|
// Processing here
|
|
|
|
|
</script>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. ### previous / next
|
|
|
|
|
|
|
|
|
|
The previous and next helpers expose a `link` and `name` property to the previous and next chapters.
|
|
|
|
|
|
|
|
|
|
They are used like this
|
|
|
|
|
|
|
|
|
|
```handlebars
|
|
|
|
|
{{#previous}}
|
|
|
|
|
<a href="{{link}}" class="nav-chapters previous">
|
|
|
|
|
<i class="fa fa-angle-left"></i>
|
|
|
|
|
</a>
|
|
|
|
|
{{/previous}}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The inner html will only be rendered if the previous / next chapter exists.
|
|
|
|
|
Of course the inner html can be changed to your liking.
|
|
|
|
|
|
|
|
|
|
------
|
|
|
|
|
|
2017-11-22 03:35:18 -07:00
|
|
|
*If you would like me to expose other properties or helpers, please [create a new issue](https://github.com/rust-lang-nursery/mdBook/issues)
|
2015-08-06 15:24:34 +02:00
|
|
|
and I will consider it.*
|