summaryrefslogtreecommitdiffstats
path: root/howtos/cyrax.html
blob: 5ea4638501eb1080fbace45bd3d21fe6eb3fe90d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{% meta %}
  title: Cyrax - ein statischer Webseitengenerator
  howto: True
{% endmeta %}

{% block content %}
{% filter markdown %}
# Cyrax

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:

        (.*?)(\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

  {%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
  
        author: Spline
        title: Spline
        url: http://www.spline.de/

* *_base.html* - Basislayoutbeispiel

     {% raw %}
        <!DOCTYPE html>
        <html lang="en">
        <head>
          <meta charset="utf-8" />
          <title>{{ site.title }}{% block title %}: {{ entry.title }}{% endblock %}</title>
        </head>
        <body>
            <!-- Beispielmenüleite -->
            <ol>
            {% for page in site.pages%}
                <li><a href="{{page.get_url()}}">{{page.title}}</a></li>
            {% endfor %}
            </ol>

            {% block content %}{% endblock %}
          </div>
        </body>
        </html>
     {% endraw %}

{% endfilter %}
{% endblock %}