A blog-oriented static site generator
Project description
Bloggo
Bloggo is yet another blog-oriented static site generator.
Requirements
- Python 3.9+
- pip
Installation
- Run
python -m pip install bloggo
to install Bloggo - Get Bloggo's Boilerplate for your site's template and content
- When ready, generate site with
python bloggo
in the directory whereresources
are
That's it, your static site should be available in the public
folder that was just created.
Every time you make changes, run python bloggo
again to generate
new files. You can upload your public
folder's contents to any hosting provided you'd like.
Content
Content files are very simple, YAML-esque (but one-level only!) structures. A complete example of a content file looks like this:
---
title: Hello, World
decription: A post about welcoming oneself to the world
date: 2021-02-12
---
Markdown content follows here.
Files have to be in a .md
extension, such as hello-world.md
and placed inside the
resources/content
directory. What's MD you say? It's Markdown. Beautiful, glorious, best friend of an efficient writer.
URLs
If you have a file called hello.md
in the root of the resources/content
directory, then that content
will be available via yoursite.com/hello. Likewise, if you put your stuff in a directory itself, like in a case of a blog post you would
have a file in resources/content/blog/hello.md
, then that content will be available via yoursite.com/blog/hello.
Note: the way Bloggo is written is that it always expects blog posts to live in the blog directory. I may at one point make it configurable (or you can make a pull request), but for now it is what it is.
Templating
Bloggo uses Handlebars to put together your static site. It runs in a single templating file, called template.hbs
, in resources
directory.
I encourage you to make it your own, change things around and go crazy. But if you won't, that's okay, too.
Variables
Global variables:
is_home
returns true when being on the home page of the siteis_post
returns true when any content item is being viewed
Additionally, any configuration that you have added to the resources/config.json
file will be available as it's own
variable as well. For example a config such as:
{
"site_title": "Doggo's Bloggo"
}
would be usable in the template as {{site_title}}
.
Contextual variables
Each of the posts yaml-esque key: value configuration is also available to you, in the post's context. Post context is available in two places:
When you are inside a is_post
context, you can simply access all the post's variables as-is. An example use-case would be:
{{#if is_post}}
<h2>{{title}}</h2>
<div class="date">{{date}}</div>
<div class="entry">{{entry}}</div>
{{/if}}
However, when you are inside a is_home
context, you c an access all the post's
variables from within a loop. An example use-case would be:
<ul>
{{#posts}}
<li>
<h2>{{title}}</h2>
<div class="date">{{date}}</div>
<div class="entry">{{entry}}</div>
</li>
{{/posts}}
</ul>
You see all the post's yaml-esque key: value things are available as {{key}}
, and the content of the post is available as {{{entry}}}
. Note
the three curly brackets, which Handlebars will render HTML with.
Assets
You should add your images, stylesheets, fonts and so on in the resources/assets
directory. This will get copied over
to the public
directory when generating, so your assets will be available via yoursite.com/assets/{...}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for bloggo-1.0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67a43b0b7f5e27df3c038e92314cf237d3a048f0fcc0b333ba89aaac1e6464e0 |
|
MD5 | dd033f2b4bd544883bf325df7de4d83a |
|
BLAKE2b-256 | 0a70f6a3d24919aee4f1288acc229c74a13be6320e957a0de467eacb8ec63e96 |