{% 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%}
  1. {{page.title}}
  2. {% endfor %}
{% block content %}{% endblock %} {% endraw %} {% endfilter %} {% endblock %}