Statische Seitengeneratoren

Seit Jahren dümpelt mein Kochblog vor sich hin. Mich nervt der allgemeine Produktionsprozess:

  • Ich muss mich für jedes Posting einloggen.
  • Die Texte müssen in diesen komischen Editor eingegeben werden.
  • Immer wieder sollten Updates in WordPress gefahren werden, was ich schon lange nicht mehr gemacht habe.

Im Gegensatz zu diesem Blog ist mir die Kommentarfunktion bei meinem Kochblog nicht wichtig, ich könnte also auf sie verzichten. Und angesichts meiner stetig wachsenden Begeisterung für Kommandozeilen-Tools wie Grunt entwickelte sich ein Plan: ich wollte einen statischen Seitengenerator für mich finden.

Kleine Auswahl

Diese Dinger erzeugen auf dem eigenen Rechner aus Templates und Markdown-Texten statisches HTML, das ich dann auf den Server schieben kann. Nach langen Recherchen habe ich folgende Systeme ausprobiert – alle basieren auf node.js:

Das Ziel war, meine Kochrezepte in sauberen Markdown-Files zu verfassen. Das System sollte neben dem Zusammenbauen und Erzeugen der HTML-Seiten natürlich auch eine Navigation anbieten. Zusätzlich zu einer normalen Liste aller Seiten waren mir Kategorien oder Tags wichtig, schliesslich möchte ich einen zielorientierten Überblick bieten. Und genau da liegt für mich das grosse Problem.

Erste Schritte

Alle Projekte beschreiben prima, wie man die jeweilige Software mittles npm im Terminal installiert. Die Vorgehensweise ist bei allen ähnlich. Die Leistungsfähigkeit und die Dokumentation unterscheidet alle Projekte. Docpad erscheint mir am Leistungsfähigsten, Cabin am Schlichtesten. Am charmantesten fand ich eigentlich Assemble, aber auch diese Software brachte mich nicht zu meinem Wunschergebnis.

Erster und wichtigster Unterschied sind die Dokumentationen. Cabin besitzt nur eine rudimentäre, bei den beiden anderen Projekten muss man sich alle wirklich wichtigen Infos aus vielen Quellen zusammensuchen. Es gibt zwar offizielle und umfangreiche Dokumentationen zu Docpad und Assemble, aber bei ihnen kommt man schnell an Grenzen. Also sucht man sich durch Github-Issues, angebotene Plugins oder durch Stackoverflow.

Mit allen Projekten konnte ich sehr schnell Seiten erzeugen und auch die Modifikation der Templates gelang relativ mühelos. Meine Testorgie brachte mir so den Einblick in Handlebars und eco als Template-Engines. Das war durchaus der beste Aspekt an meinen Versuchen.

Die leidige Navigation

Doch in einem Aspekt versagten alle Projekte: in der Beschreibung, wie man eine Navigation bzw. eine modifizierte Navigation einbaut. Mit modifiziert mein ich, dass ich Navigationen abhängig von Tags oder Kategorien erzeugen möchte.

Navigationen scheinen unwichtig zu sein, denn sie nehmen in den Dokumentationen eine Randstellung ein. Sie werden schlecht beschrieben und in der beschriebenen Form funktionieren sie nicht wie gewünscht. Der in der Doku von Docpad gefundene Code funktionierte nicht. Ich fand glücklicherweise ein Plugin, das auf den ersten Blcik prima funktionierte. Doch damit hatte ich leider noch keine Lösung für eine auf einen Tag konzentriere Navigation. Zudem verlinkt das Plugin auch mein Stylsheet und mein JavaScript-File.

Und all das, ohne eigene Modifikationen vorgenommen zu haben. Der beschriebene Weg, über zusätzliche Meta-Informationen brachte leider auch kein Tag-Menü zustande.

Fazit

Ich empfinde die Idee statischer Seitengeneratoren noch immer klasse. Oft benötige ich schlicht keine dynamischen Seiten, keine Datenbank. Systeme wie Kirby gehen mir deshalb nicht weit genug. Schliesslich werden damit die Inhalte erst per PHP auf dem Server gerendert. Ich möchte aber das gleiche Prinzip wie bei CSS-Präprozessoren anwenden: ich möchte Inhalte dynamisch offline zusammenstellen und statisch ausgeben. Die Inhalte sollen mit Markdown geschrieben werden. Deshalb fällt leider Dreamweaver als “lokales CMS” aus.

Ich werde die Projekte weiter beobachten, vielleicht tut sich ja etwas in näherer Zukunft. Ein wenig habe ich mich geärgert, dass ich nicht sofort alle aufgefallenen Probleme notiert und als Ticket bei den jeweiligen Github-Projekten eingetütet habe. Ich nachinein kann ich nur noch einen Bruchteil rekonstruieren.

Ich werde wohl mittelfristig doch bei WordPress bleiben, denn noch länger möchte ich meine Zeit nicht für die Suche nach einer bequemeren technischen Lösung vergeuden.

8 Kommentare

  1. Hast Du Dir schon mal Octopress angeschaut?
    Das dürfte alle Deine Anforderungen erfüllen und gut Dokumentiert ist es obendrein.

    http://octopress.org

    • @Alex: Ich war auf der Seite und sah, dass sich das Projekt offenbar seit zwei Jahren im Tiefschlaf befindet. Das hatte mich dann demotiviert. Aber danke, dass Du mich daran erinnert hast. Ich kann ja noch einen letzten Test wagen.

  2. Das kenne ich, letztendlich habe ich ab und an für Freunde/Kunden schnell in meinem eigene Tool MD geschrieben und lass HTML erstellen, was ich dann rüber schiebe. Aber flexibel ist das nicht, insbesondere Navigation. Aber das Suchen hat mich auch mehr Zeit gekostet als gewollt.
    Wegen OctoPress solltest du mal Frederic fragen, der war zumindest da mal fit; denke ich.

    • Ich habe jetzt mit Octopress herumgespielt und bin ganz angetan. Hätte ich von Anfang an tun sollen. Mal schauen, wie weit ich komme. Ich habe es sogar geschafft, alle WordPress-Artikel einfach zu importieren.

  3. eigenes Projekt, welches via MD html speichert: https://github.com/bueltge/Notes

  4. Das Problem mit „zu viel Features“ verstehe ich total. Man braucht halt nicht unbedingt dynamische Funktionen.
    Ich habe mir seit ca. einem Jahr vorgenommen, kpm zu entwickeln (Kirby Package Manager), eine erste Version liegt auch schon auf GitHub. Leider ist der Code totaler Bullshit, da muss ich nochmal ran – hätte ich jetzt nicht wieder Schule.
    Das Coole: kpm bietet einen Task, um aus einer Kirby-Site statisches HTML zu exportieren. 🙂

    • @Lukas: Du kannst mir doch nicht erst den Mund wässrig machen und dann sagen, dass sowas profanes wie Schule der wichtigen Entwicklung vorgeht!!! 🙂
      In der zwischenzeit bin ich mit Octopress gut vorangekommen und bin ganz zufrieden. Damit klappt es jetzt ganz gut.

  5. Dann ist http://dropplets.com/ vermutlich leider auch nichts für dich?

    Was Docpad angeht: Teste mal, ob du vernünftige Links hinbekommst, ich habe den Eindruck, dass Docpad davon ausgeht, dass die Inhalte immer direkt auf einer TLD liegen. Zumindest sind die Linkpfade bei mir immer absolut (beginnend mit /) herausgekommen.