zero-knowledge

new blog engine

As you can see, the blog finally got a new design, because we came around to actually work on it.

So in this post, I will explain a bit, what we actually did and why we reworked the blog yet again.

history

The old blog engine was a self written system in ruby using zero. It worked pretty well the first couple months. But it was on one side a huge pain to keep up to date and on the other side, I didn’t even get around to implement a nice interface to write new blog entries. Since then, every article was hand crafted in an editor and published by pushing it into the database.

new system

For the new system, we decided to just avoid all the hassle and take the route of a static pages for now. Despite the old blog never being updated, it still was very fast and we did not want to loose that.

With that, we decided on hugo, just because it is easy to install and to keep up to date, as the only thing to do, is to refresh the pages and copy them into the correct directory.

some implementation hassles

If you are trying to make the switch to hugo, here are some problems I found and a solution.

1. RSS feed

The RSS feed can be adjusted in a separate template, but the default one works okay. Hugo will automatically create index.xml files, which represent the rss feeds, for the sections and content index pages. You can overwrite the rss templates to filter out content you don’t want to have in there.

If you want to completely disable the RSS feature, you can add the following option to your configuration.

# Do not build RSS files
disableRSS:                 false

template calling

Hugo is a bit different in comparison to many other systems in how the templates are called. Instead of using central template and branching out from it, hugo calls specific templates when it needs them and they have to include the files they need, for example the header.

You can create a directory partials and place partial templates there to include in your main template, using {{ partial "name.html" / }}.

To call other templates, use the .Render function.

The documentation on templates is pretty good, when using some examples from other themes.

As for this blogs theme, you can find everything on our git.

taxonomies

One can easily define taxonomies when creating a new content just by adding a new key/value pair into the head of the content.

These can then be accessed in the template through {{ .Param.keyname }}.

Hugo creates automatically index pages for the taxonomies, which is rather nice.

https support

For https support you need to set the baseurl to an empty string. This way all resources are referenced absolutely from the root directory.

If you only have https or http, you can define the complete path in the configuration.

result

Till now, we are pretty please with the overall result. Building the pages works very fast and the hugo server also embedds a small javascript to reload the page when new context was added or saved.

Everything we have built and used is available in the git repository, so you can take a look there, how everything works.