Bonsai uses a set of very simple conventions to handle content and templating. Everything is managed through the filesystem. There is no database, no admin interface. It’s just you and your content.
/site-name - content - index default.yml - public - templates default.mustache - partials
All content is stored on the file system in the “content” directory, the folder paths that you use will imply the paths used on the final web site.
For example, a page kept under
content/about-us/services will have a permalink of “/about-us/services”.
For a page to be recognised, you’ll need a
template-name.yml file. The “template-name” section of the file name refers to the template that will be used to render your page.
.yml file holds the textual content for your page, you can create key/value pairs with strings, hashes or arrays. This allows for outputting text or iterating over more complex objects to write them into your template neatly.
Page order and “Floating” pages
Bonsai will order your pages within the “navigation”, “children” and “siblings” arrays by the prefix given to its parent folder.
content/1.about-us will be ordered before
content/2.products but don’t worry - this will be cleaned up and removed from the final permalink.
“Floating” pages are not present in the “navigation”, “children” or “siblings” arrays. This can be achieved by not prefixing the containing directory eg
content/about-us/services with a digit.
Each page that you create has access to a set of predefined variables as well as its content, you can use these to build complex navigation and get access to images or downloads stored for each page.
Templates are kept in the “templates” directory. All templates are rendered using Tilt. Running the
bonsai --plant generator gives you a mustache template to get you running. To use other templating languages simply use the correct file extension. For documentation about more templating, check the specific templating language documentation. (Mustache, for those who are happy with defaults)
All files kept in the “public” directory will be copied into the “output” directory. Any
.less files will be processed using lesscss and will be renamed to .css When you run
bonsai --repot to ready your site for deployment all the .css and .js files will be minified using the YUI compressor.