- ARTICLES & PRESENTATIONS
- COPYRIGHT AND LICENSE
blio.pl - Blio - domm's blogging "engine"
~/your_blog$ blio.pl --source_dir src --output_dir htdocs --template_dir templates
Blio is a very simple blogging "engine". I call it an '"engine"' because Blio is basically a slightly enhanced and streamlined (for my use cases, at least) ttree, or yet another pre-clone of jekyll.
In other words, it takes a bunch of plain text files containing some simple headers and some content, runs them through some templates, and writes out some html files for static serving. Blio also does some other things (most notably image handling, powered by Imager).
Blio needs three directories: src, out and templates.
templates contains the
Template::Toolkit templates used to render the HTML, src contains all your raw content and
out containes the rendered HTML content ready for serving by your favourite web server.
But there a few formal restrictions you need to observer so
Blio can work:
Each node has to be a plain text file. It should have an all-lowercase filename. It must have an all-ascii filename. It must end in '.txt'.
If a node should contain sub-nodes, those have to be stored in a directory having exactly the same name as the node, but without the '.txt'.
If you want to link exactly one image to a node, the image has to have exactly the same name as the node, but with '.txt' replaced with a proper extension.
If you want to link one or more images to a node, you must put them in a directory at the same level as the node. This directory must have the same name as the node, but with '.txt' replaced by '_images'
|-- out |-- templates `-- src |-- iceland | |-- geysir.txt | |-- geysir_images | | |-- geysir_1.jpg | | `-- geysir_2.jpg | |-- gullfoss.txt | |-- gullfoss.jpg | `-- no_image.txt `-- iceland.txt
Each Node is a simple plain-text UTF8 encoded file consisting of an HTTP-like header, a blank line and the content.
The title of this blog post. Required
The publication date of this post. Has to be parsable by
DateTime::Format::ISO8601. If this field is not set in the file, the mtime of the file will be used.
The language of this post. See CONFIGURATION.
The converter to use. See CONFIGURATION.
If set to a true value, an RSS feed will be generated containing the children of this node.
The name of the author of this post
A comma seperated list of tags. See also the Global Config
Set to a value > 0 to have the children of this node paged.
Enable inline images
The content can be generated using the common formatting languages supported by
Markup::Unified, or HTML
# file: iceland/geysir.txt title: Geysir converter: textile thumbnail: 400 Lots of water h4. Food There's a small tourist info where you can get soup.
The easiest way to install the current stable version of
Blio is via CPAN and
~$ cpanm Blio Fetching http://www.cpan.org/authors/id/D/DO/DOMM/Blio-2.002.tar.gz ... OK Configuring Blio-2.002 ... OK ... # installing dependencies Building and testing Blio-2.002 ... OK Successfully installed Blio-2.002
If you don't have
cpanminus installed yet, install it right now:
~$ curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Blio from a tarball or a git checkout, you will need Dist::Zilla and some
~/perl/Blio$ cpanm Dist::Zilla ~/perl/Blio$ dzil authordeps | cpanm
Now you can build a
~/perl/Blio$ dzil build
And finally you can install
~/perl/Blio$ dzil install
Or change into the build directory (Blio-$VERSION) and do the old install dance:
~/perl/Blio/Blio-2.002$ perl Build.PL ~/perl/Blio/Blio-2.002$ ./Build ~/perl/Blio/Blio-2.002$ ./Build test ~/perl/Blio/Blio-2.002$ ./Build install # might require sudo
Blio can be configured via a combination of command line options and a config file.
See MooseX::Getopt and MooseX::SimpleConfig for the implementation details.
Global Config can be specified via command line option or the global config file.
Path to the configfile. Default 'blio.ini'. The configfile has to be parsable by MooseX::SimpleConfig.
The directory containing the plain text source files. Here is where you generate and edit content. Default 'src'.
The directory where the rendered HTML files are stored. This directory should be the document root of your webserver. Default 'out'.
The directory containing the templates used to render your content. Default 'template'.
Please note that some very simple (and very ugly) default templates are provided by Blio. They come in the share/templates directory of the distribution and are installed along the module via File::ShareDir.
The name of your blog.
The URL of your blog (needed to generate a proper RSS feed)
Your name (needed to generate a proper RSS feed)
Set to a true value if you want to use tags in your Blog. If you do, all tags will be collected and added to a vitual top node called 'tags.html'.
Set to a true value if you want to use the scheduling feature. If active, all node with a date in the future will not be rendered.
Force a complete regeneration of the site. Currently, this mostly means that all images will be again converted to thumbnails.
Do not producde regular output
Per-Node config can be specified per node, or falls back to a global value specified via command line option or in the config file.
The default language of your content. You can set other languages per node. Default "en".
The default text2html converter. You can choose other converters per node. Currently valid converters are:
bbcode. If you choose
html, the content is not converted at all (because we assume it's already HTML). All other converters are handled via
The width (in pixel) of thumbnails that are generated by Blio / Imager. Default "300".
Talk at Linuxwochen 2013 Wien (in german)
Thomas Klausner <email@example.com>
This software is copyright (c) 2013 by Thomas Klausner.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.