summaryrefslogtreecommitdiffstats
path: root/howtos/cyrax.html
blob: 96ac7175cab76c14f9ef4161c10b5af9821a37a5 (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
101
102
103
104
{% meta %}
  title: Cyrax - ein statischer Webseitengenerator
{% endmeta %}

{% block content %}
<h2>Cyrax</h2>

{% 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

    <!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 %}