Monad¶ ↑
Monad is a simple, blog aware, static site generator based on Jekyll.
The main feature it adds is as follows:
-
Support data sources
-
Support posts from external sources(TBD)
Data Sources¶ ↑
Data Source enables you to load data from external sources, such as web, file system, databases and then use them inside views.
Note that Jekyll
now automatically load yaml files under _data
directory. You’re recommended to use that feature) unless it can’t fulfill your requirements.
Monad supports two built-in data sources:
-
YAML
from local file system -
JSON
from web
And it’s easy to roll your own data source driver.
JSON¶ ↑
In ordre to use json from web in your site, set following in _config.yml
file:
data_sources: - name: albums # will be used as site.albums to access data, no spaces allowed type: json url: http://www.example.com/albums.json # must be http or https
Then, inside html you can access the data as following:
{% for album in site.albums %} ... {% endfor %}
YAML¶ ↑
To define a yaml data source, set following in _config.yml
file:
data_sources: - name: products # will be used as site.products to access data, no spaces allowed type: yaml path: _database/products.yml # must be on local file system
Then, inside html you can access the data as following:
{% for product in site.products %} ... {% endfor %}
Custom drivers¶ ↑
The skeleton of your driver should be as follows:
module Jekyll module Drivers class XxxDriver # source options are passed in as an Hash def initialize(options) end # return the loaded data as Array or Hash or a nested structure of Array and Hash def load end end end end
After you’ve implemented the code, put the source file inside _plugins
directory.
Then in _config.yml
, you can use the driver as follows:
data_sources: - name: students type: xxx
If the type is xxx
, Monad assumes the corresponding driver is Monad::Drivers::XxxDriver
. If the type is xxx_yyy
, the driver should be Monad::Drivers::XxxYyyDriver
, and so on.
Beside the obligatory name
and type
options, you can define any more options to be used inside the driver.