105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
+++
|
|
date = "2015-11-18T20:45:08+01:00"
|
|
draft = false
|
|
title = "new blog engine"
|
|
author = "Gibheer"
|
|
|
|
+++
|
|
|
|
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](https://github.com/libzero/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](http://gohugo.io/), 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](https://gohugo.io/templates/rss/) 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](https://gohugo.io/overview/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](https://gohugo.io/templates/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](https://gohugo.io/templates/overview/) is pretty
|
|
good, when using some examples from other themes.
|
|
|
|
As for this blogs theme, you can find everything on [our git](https://git.zero-knowledge.org/gibheer/zblog).
|
|
|
|
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](https://git.zero-knowledge.org/gibheer/zblog),
|
|
so you can take a look there, how everything works.
|