f8c6034342
This fixes two minor problems introduced by
|
||
---|---|---|
src | ||
tests | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md |
A static site generator written in Rust.
Installation
$ cargo install --git https://github.com/cobalt-org/cobalt.rs
Usage
$ cobalt build -s path/to/your/source -d path/to/your/destination
See more options with
$ cobalt -h
Layouts
You can have custom layouts in the _layouts
directory.
Layouts will be compiled as liquid templates.
Posts
Posts live in _posts
.
Example:
extends: posts.tpl
title: My first Blogpost
date: 01 Jan 2016 21:00:00 +0100
---
Hey there this is my first blogpost and this is super awesome.
My Blog is lorem ipsum like, yes it is..
The content before ---
are meta attributes ("front matter") made accessible to the template via their key (see below).
The extends
attribute specifies which layout will be used.
The date
attribute will be used to sort blog posts (from last to first). date
must have the format %dd %Mon %YYYY %HH:%MM:%SS %zzzz
, so for example 27 May 2016 21:00:30 +0100
.
Other files
Any file with the .tpl, .md or .liquid file extension is considered a liquid template and will be parsed for metadata and compiled using liquid, like a post.
Unlike posts, files outside the _posts
directory will not be indexed as blog posts and not passed to the index file in the list of contents.
All other files and directories in the source folder will be recursively added to your destination folder.
You can specify different template extensions by setting the template_extensions
field in your config file:
template_extensions: ['txt', 'lqd']
Attributes
All template files have access to a set of attributes.
In example above title is accessible via {{ title }}
and date via {{ date }}
, for the layout template as well as the post template.
Special Attributes
content
{{ content }}
is accessible only to layouts and contains the compiled text below the ---
block of the post.
posts
{{ posts }}
is a list of the attributes of all templates in the _posts
directory. Example usage on a page listing all blog posts:
{% for post in posts %}
<a href="blog/{{post.name}}.html">{{ post.title }}</a>
{% endfor %}
RSS
To generate an RSS file from the metadata of your _posts
, you need to provide the following data in your config.file:
# path where the RSS file should be generated
rss: rss.xml
name: My blog!
description: Blog description
link: http://example.com
None of these fields are optional, as by the RSS 2.0 spec.
Make sure to also provide the fields title
, date
and description
in the front matter of your posts.