2018-09-13 16:07:55 +00:00
|
|
|
# Hugo Book Theme
|
2018-09-17 13:09:51 +00:00
|
|
|
### [Hugo](https://gohugo.io) documentation theme as simple as plain book
|
2018-09-13 16:07:55 +00:00
|
|
|
|
|
|
|
![Screenshot](images/screenshot.png)
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
|
2018-09-13 16:07:55 +00:00
|
|
|
## Features
|
|
|
|
* Clean simple design
|
|
|
|
* Mobile friendly
|
2018-09-17 13:09:51 +00:00
|
|
|
* Customizable
|
|
|
|
* Designed to not interfere with main website
|
|
|
|
* Zero initial configuration
|
2018-09-13 16:07:55 +00:00
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
|
2018-09-13 16:07:55 +00:00
|
|
|
## Installation
|
2018-09-17 13:09:51 +00:00
|
|
|
Navigate to your hugo website root and run:
|
2018-09-13 16:07:55 +00:00
|
|
|
```
|
2018-09-17 13:09:51 +00:00
|
|
|
git clone git@github.com:alex-shpak/hugo-book.git themes/book
|
2018-09-13 16:07:55 +00:00
|
|
|
```
|
|
|
|
|
2018-09-17 13:09:51 +00:00
|
|
|
Then run hugo (or set `theme: book` in configuration file)
|
|
|
|
```
|
|
|
|
hugo server --theme book
|
|
|
|
```
|
2018-09-13 16:07:55 +00:00
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
|
|
|
|
## Menu
|
2018-09-17 13:09:51 +00:00
|
|
|
### File tree menu (default)
|
|
|
|
By default theme will render pages from `content/docs` section as menu in a tree structure.
|
|
|
|
You can set `title` and `weight` in front matter of pages to adjust order and titles in menu.
|
2018-09-13 16:07:55 +00:00
|
|
|
|
2018-09-17 13:09:51 +00:00
|
|
|
### Leaf bundle menu
|
|
|
|
You can also use leaf bundle and content of it's `index.md` as
|
2018-09-17 13:33:04 +00:00
|
|
|
menu.
|
|
|
|
|
|
|
|
Given you have this file structure
|
|
|
|
```
|
|
|
|
├── content
|
|
|
|
│ └── docs
|
|
|
|
│ ├── page-one.md
|
|
|
|
│ └── page-two.md
|
|
|
|
```
|
|
|
|
|
|
|
|
Create file `content/docs/menu/index.md` with content
|
|
|
|
```md
|
2018-09-17 23:35:54 +00:00
|
|
|
---
|
|
|
|
headless: true
|
|
|
|
---
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
- [Book Example](/docs/)
|
|
|
|
- [Page One](/docs/page-one)
|
|
|
|
- [Page Two](/docs/page-two)
|
|
|
|
```
|
|
|
|
|
|
|
|
And Enable it by settings `BookMenuBundle: /docs/menu` in Site configuration
|
|
|
|
|
2018-10-30 14:56:42 +00:00
|
|
|
- [Example menu](exampleSite/content/menu/index.md)
|
2018-09-17 13:09:51 +00:00
|
|
|
- [Example config file](exampleSite/config.yml)
|
|
|
|
- [Leaf bundles](https://gohugo.io/content-management/page-bundles/)
|
2018-09-13 16:07:55 +00:00
|
|
|
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
## Configuration
|
|
|
|
### Site Configuration
|
2018-09-17 13:09:51 +00:00
|
|
|
There are few configuration options you can add to your `config.yml|json|toml` file
|
2018-09-13 16:07:55 +00:00
|
|
|
```yaml
|
|
|
|
# (Optional) Set this to true if you use captial letters in file names
|
|
|
|
disablePathToLower: true
|
|
|
|
|
|
|
|
params:
|
|
|
|
# (Optional, default true) Show or hide table of contents globally
|
|
|
|
# You can also specify this parameter per page in front matter
|
|
|
|
BookShowToC: true
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
# (Optional, default none) Set leaf bundle to render as side menu
|
2018-09-13 16:07:55 +00:00
|
|
|
# When not specified file structure and weights will be used
|
|
|
|
BookMenuBundle: /docs/menu
|
|
|
|
|
|
|
|
# (Optional, default docs) Specify section of content to render as menu
|
|
|
|
# You can also set value to "*" to render all sections to menu
|
|
|
|
BookSection: docs
|
|
|
|
```
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
### Page Configuration
|
|
|
|
You can specify additional params per page in front matter
|
2018-09-13 16:07:55 +00:00
|
|
|
```yaml
|
|
|
|
---
|
2018-09-17 13:33:04 +00:00
|
|
|
# Set type to 'docs' if you want to render page outside of configured section or if you render section other than 'docs'
|
2018-09-13 16:07:55 +00:00
|
|
|
type: docs
|
|
|
|
|
|
|
|
# Set page weight to re-arrange items in file-tree menu (if BookMenuBundle not set)
|
|
|
|
weight: 10
|
|
|
|
|
2018-09-27 23:12:07 +00:00
|
|
|
# (Optional) Set to mark page as flat section in file-tree menu (if BookMenuBundle not set)
|
|
|
|
bookFlatSection: true
|
2018-09-13 16:07:55 +00:00
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
# (Optional) Set to hide table of contents, overrides global value
|
2018-09-13 16:07:55 +00:00
|
|
|
bookShowToC: false
|
|
|
|
---
|
|
|
|
```
|
|
|
|
|
2018-09-17 13:09:51 +00:00
|
|
|
### Partials
|
|
|
|
There are few empty partials you can override in `layouts/partials/`
|
2018-09-17 13:19:18 +00:00
|
|
|
|
2018-09-27 23:12:07 +00:00
|
|
|
| Partial | Placement |
|
|
|
|
| -- | -- |
|
|
|
|
| `layouts/partials/docs/inject/head.html` | Before closing `<head>` tag |
|
|
|
|
| `layouts/partials/docs/inject/body.html` | Before closing `<body>` tag |
|
|
|
|
| `layouts/partials/docs/inject/menu-before.html` | At the beginning of `<nav>` menu block |
|
|
|
|
| `layouts/partials/docs/inject/menu-after.html` | At the end of `<nav>` menu block |
|
2018-09-17 13:09:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome and I will review and consider pull requests.
|
|
|
|
Primary goals are:
|
|
|
|
- Keep it simple
|
|
|
|
- Keep minimal (or zero) default configuration
|
|
|
|
- Avoid interference with user-defined layouts
|
|
|
|
|
2018-09-17 13:33:04 +00:00
|
|
|
Feel free to open issue if you missing some configuration or customisation option.
|
2018-09-13 16:07:55 +00:00
|
|
|
|
|
|
|
## License
|
|
|
|
[MIT](LICENSE)
|