{% meta %}
title: Cyrax - ein statischer Webseitengenerator
{% endmeta %}
{% block content %}
Cyrax
{% filter rst %}
Cyrax ist ein statischer Webseitengenerator. Es hat sehr starke Ähnlichkeiten zu
Hyde oder Jekyll, ist aber im Gegensatz zu diesen ziemlich schlank und hat
deutlich weniger Abhängikeiten. Cyrax benutzt die Template-Engine Jinja2. Es
können aber unter anderem weitere Markup-Sprachen wie Markdown, Rst oder Textile
verwendet werden.
Um in Cyrax ein Website zu generieren, müssen sogenannte Models angelegt werden.
Es gibt in Cyrax vier Models: Post, Tag, Page und NonHTML. Beim Generieren der
Website durchläuft Cyrax das Verzeichnis und versucht jede Datei einem Model
zuzuweisen. In jener Reihenfolge wird überprüft ob die Datei den
Modelanforderungen entspricht. Ausgenommen beim traversieren sind unsichtbare
Dateien, sowie Dateien die mit einem Unterstrich anfangen.
1. Post
Ein Post zeichnet sich dadurch aus, dass im Pfad ein Datum vorkommt. Dies kann
entweder in Form von Bindestrichen oder durch Ordnerhierachien geschehen. Der
genaue Regex hierfür ist der folgende
.. sourcecode:: perl
(.*?)(\d+)[/-](\d+)[/-](\d+)[/-](.*)$
Beispiele:
* blog/2012/05/15/my-awesome-post.html
* 2012/05/15/my-awesome-post.html
* 2012/05-15-my-awesome-post.html
* 2012-05-15-my-awesome-post.html
Die Besonderheit von Posts ist, dass es ein Datum anhand des Pfades hat und es
daran auch intern sortiert wird. Desweiteren können Posts mit Tags versehen
werden.
2. Tag
3. Page
Pages sind normale statische Html-Seiten. Erkannt werden diese durch die
html-Dateiendung.
4. NonHTML
NonHTML ist das Gegenstück zur Page. Eine Datei wird genau dann diesem Model
zugewiesen, wenn es nicht auf html im Namen endet. Sinnvoll zum Beispiel für
Atom-Feeds oder ähnliches.
Auf alle Models kann über das Site-Object in Jinja2-Templates zugegriffen
werden.
Beispiel für Pages
.. sourcecode:: python
{%raw%}
{% for page in site.pages %}
{{page.title}}
{% endfor %}
{%endraw%}
Damit mit Cyrux eine statische Website generiert werden kann, müssen folgende
Dateien vorhanden sein:
* *settings.cfg* - Konfigurationsdateibeispiel
.. sourcecode:: python
author: Spline
title: Spline
url: http://www.spline.de/
* *_base.html* - Basislayoutbeispiel
{% raw %}
.. sourcecode:: html
{{ site.title }}{% block title %}: {{ entry.title }}{% endblock %}
{% for page in site.pages%}