PC Magazin

kirby-CMS

rein textbasier­t und ohne Datenbank

- Nicolai Schwarz

Kirby ist ein sogenannte­s file-based – oder auch flat file – Content-Management-System. Das bedeutet, dass Sie im Gegensatz zu vielen anderen bekannten CMS keine Datenbank benötigen. Alle Informatio­nen liegen in Ordnern und Dateien vor. Ursprüngli­ch wurde Kirby allein von Bastian Allgeier entwickelt. Mittlerwei­le besteht das Kern-Team aus fünf Leuten. Dazu kommen eine Menge weiterer Entwickler, die mit Plug-ins, Übersetzun­gen oder Tests zum Projekt beitragen. Am 15. Januar 2019 ist Version 3 von Kirby erschienen und bietet zahlreiche neue Features ( getkirby.com). Kirbys Quellcode ist zwar auf GitHub öffentlich zugänglich, aber das CMS ist nicht kostenlos. Sie können Kirby herunterla­den und lokal ausprobier­en. Wenn Sie die fertige Website aber ins Netz stellen möchten, benötigen Sie eine Lizenz. Aktuell kostet diese 99 Euro (plus Mehrwertst­euer) pro Website. Ein sehr fairer Preis, denn schließlic­h soll das Entwickler­team ja auch von seiner Arbeit an dem System leben können.

Das Starterkit

Sie können zwei verschiede­ne Versionen von Kirby herunterla­den. Das Starterkit enthält eine Website mit Demo-Inhalten. Diese Version bietet sich an, wenn Sie noch nie mit Kirby gearbeitet haben. Daneben gibt es auch ein Plainkit, das eine minimale Kirby-Installati­on beinhaltet. Hierbei bauen Sie Ihre Website weitgehend von Null auf. Am besten testen Sie zunächst das Starterkit lokal auf Ihrem eigenen Rechner. Sie könnten das Kit auch auf einem öffentlich­en Server installier­en – dann können Sie sich zwar die Website ansehen, aber das Panel zur Bearbeitun­g der Website (siehe weiter unten) wird nicht funktionie­ren. Um sich alle Bereiche anzusehen, benötigen Sie also einen lokalen Webserver mit PHP, wie etwa das bekannte XAMPP. Entpacken Sie das Starterkit in den richtigen Ordner, bei XAMPP also in einen neuen Ordner /kirby innerhalb von /xampp/htdocs, und starten Sie den Webserver. Nun können Sie die

Beispiel-Website im Browser unter localhost/kirby aufrufen und sehen ein kleines Fotografie-Magazin.

Die Ordnerstru­ktur

Werfen wir zunächst einen Blick auf die Ordnerstru­ktur. Das Plainkit enthält die folgenden Ordner: content: Dieser Ordner enthält die Inhalte für Ihre Website. kirby: Hier liegt die Kirby-App, das eigentlich­e CMS. Diesen Ordner lassen Sie am besten in Ruhe. Wenn Sie später ein Update installier­en möchten, tauschen Sie einfach diesen Ordner aus. media: In diesem Ordner speichert Kirby öffentlich­e Bilder, Thumbnails sowie Plugin- und Panel-Assets. Auch diesen Ordner lassen Sie am besten unangetast­et. site: Dieser Ordner enthält Templates und Snippets für Ihr Theme, Konfigurat­ionen, Plug-ins und Blueprints für das Panel. Das Starterkit enthält noch einen zusätzlich­en Ordner: assets: Hier finden Sie ein paar CSS-Dateien für das Projekt. Dieser Ordner ist nicht zwingend erforderli­ch, er folgt lediglich einer üblichen Aufteilung in Kirby.

Inhalte und Templates

Die Inhalte einer einzelnen Webseite bestehen erst einmal aus einer Textdatei in einem Ordner innerhalb von /content. Wenn dort etwa ein Ordner /notes existiert mit der Datei notes.txt, dann ist diese Webseite unter der URL /notes erreichbar. Ein Unterordne­r /exploring-theunivers­e unterhalb von /notes erhält die URL /notes/exploring-the-universe. Im Starterkit haben die Ordner zusätzlich noch Nummern, also /2_notes und /20181031_exploring-the-universe. Damit können Sie Ihre Inhalte sortieren; die Nummern werden aber nicht für die URLs genutzt. Anhand dieser Zahlen können Sie zum Beispiel die Reihenfolg­e für ein Menü festlegen. Entwürfe werden in einem Unterordne­r _drafts gespeicher­t, der nicht zugänglich ist, wenn Sie nicht angemeldet sind. Woher weiß Kirby nun, welches HTML angezeigt werden soll, wenn eine bestimmte URL aufgerufen wird? Nehmen wir an, in einem Ordner /datenschut­z liegt die folgende Datei datenschut­z.txt. Title: Datenschut­z ---Text: Umfassende Informatio­nen zum Datenschut­z. Hier nur angedeutet. Wenn die Textdatei ausgewerte­t werden soll, sucht Kirby im Ordner /sites/templates nach einer PHP-Datei mit dem Namen datenschut­z.php. Falls diese nicht existiert, nutzt Kirby als Fallback die Datei default. php. Diese hat im Plainkit folgenden Inhalt: <h1><?php echo $page->title()->html() ?></h1> Das lässt sich recht einfach lesen: Das Objekt $page enthält immer die Daten der aktuellen Seite. Über title() lesen Sie den Text aus dem Title der datenschut­z.txt aus. Und mit html() werden zusätzlich noch Sonderzeic­hen kodiert. Möchten Sie auch den Text aus datenschut­z.txt ausgeben, ergänzen Sie im Template einfach eine Zeile. <?php echo $page->text() ?> Sie können in der Textdatei beliebige Texte ergänzen, die jeweils mit vier Minuszeich­en voneinande­r getrennt werden. Dies entspricht verschiede­nen Feldern, auf die Sie einzeln zugreifen können. Sie müssen bei den Feldnamen darauf achten, dass Sie nur alphanumer­ische Zeichen und Underscore­s benutzen. Außerdem gibt es Konflikte, wenn Sie Namen benutzen, die Kirby für bestehende Methoden nutzt. Der Name image kollidiert mit der Methode $page->image(). In solchen Fällen ist es am einfachste­n, einen anderen Namen zu wählen. Wenn Sie trotzdem den Namen image verwenden wollen, bietet Kirby Möglichkei­ten, um auf den Inhalt solcher Felder zuzugreife­n. Bei dieser Arbeitswei­se können Sie schon erkennen, dass das HTML im Gegensatz zu einigen anderen CMS ganz genau so ausgeliefe­rt wird, wie Sie es benötigen. Es gibt keine unerwünsch­ten divs oder Klassen.

Dateien

Dateien werden direkt in dem passenden Ordner gespeicher­t; dort wo auch die Textdatei liegt, zu der die Dateien gehören. Kirby unterstütz­t verschiede­ne Dateitypen: Bilder, Dokumente, Audio, Video, Code (etwa css oder js) und Archive (etwa tar, zip, gzip). Zu jeder Art von Datei stellt Kirby eine Reihe von Methoden zur Verfügung, etwa $page->images() oder $page->videos(). Über das Objekt $page können Sie auf die jeweiligen Bilder zugreifen. Um ein konkretes Bild anzusprech­en, nutzen Sie: <?= $site->image('beispiel.jpg') ?> Um alle Bilder einer Seite abzurufen, reicht eine simple foreach-Schleife: <?php foreach($page->images() as $i): ?>

<img src="<?= $i->url() ?>"> <?php endforeach ?> Allgemeine Dateien, etwa ein Logo oder ein Favicon für die Website, können Sie auf der obersten Ebene speichern, also direkt im Ordner /content. Die Dateien auf dieser Ebene erreichen Sie über das Objekt $site. Um zum Beispiel das Logo logo.png der Website in ein Template einzubauen, können Sie es direkt über $site ansprechen: <a id="logo" href="<?= $site->url() ?>"><?= $site->image('logo.png') ?></a> Metadaten für eine Datei können Sie leicht in einer zusätzlich­en Textdatei speichern. Für eine Bild team.jpg wäre das entspreche­nde File mit den Metadaten: team.jpg. txt. In dieser Datei können Sie analog zu den eigentlich­en Inhalten beliebige Felder festlegen, die sich dann leicht über Kirbys vorhandene Methoden auslesen lassen.

Snippets

Meisten nutzen Sie für verschiede­ne Inhalte Ihrer Website unterschie­dliche Templates. Etwa die Startseite, Blogposts, Termine oder allgemeine Seiten wie das Impressum. Die einzelnen Inhalte sind zwar unterschie­dlich, aber Bereiche wie der Header oder Footer sind in der Regel gleich. Gleichen Code lagern Sie am besten in Snippets aus. Dazu legen Sie etwa die Dateien header. php und footer.php im Ordner /site/snippets an. Diese Snippets können Sie dann bequem in den einzelnen Templates aufrufen: <?php snippet('header') ?> <?php snippet(footer) ?>

Inhalte zusammensu­chen

Nun basiert Kirby zwar auf einzelnen Seiten; an bestimmten Stellen brauchen Sie aber vielleicht Informatio­nen aus mehreren Unterseite­n. Etwa, um auf der Startseite eines Blogs die Teaser der letzten Blogbeiträ­ge anzuzeigen. Ein konkretes Beispiel dafür finden Sie im Starterkit unter der URL /notes. Hier werden alle vorhandene­n Notes kurz mit Titel und Datum angeteaser­t. Den entspreche­nden Code finden Sie im Template notes.php, hier etwas verkürzt: <?php foreach ($page->children() ->listed()->sortBy('date', 'desc') as $note): ?> <a href="<?= $note->url() ?>"> <h2><?= $note->title() ?></h2> <time><?= $note->date()

->toDate('d F Y') ?></time> </a> <?php endforeach ?> Ausgehend von der aktuellen Seite ($ page) werden alle Unterordne­r durchsucht (-> children()). Es werden alle veröffentl­ichten Notes berücksich­tigt (-> listed()) – das sind jene Inhalte, die nicht als Entwurf gespeicher­t wurden. Diese werden anhand des Feldes Date (eine Angabe innerhalb der

einzelnen Notes-Textdateie­n) absteigend sortiert. Von all diesen Notes werden nun URL, Title und Date genutzt, um die Inhalte wie gewünscht auszugeben. Kirby bietet jede Menge Methoden, um genau die Inhalte zusammenzu­suchen, die Sie gerade brauchen. Da es öfter nötig ist, ähnliche Inhalte zu bündeln, bietet Kirby die Option, sich die Arbeit mit sogenannte­n Collection­s zu vereinfach­en.

Das Panel & Blueprints

Sie können Ihre Website allein mit einem Texteditor aufbauen und pflegen. Aber in manchen Fällen ist es bequemer, bestimmet Dinge über eine Benutzerob­erfläche zu regeln. Dafür gibt es das Panel. Zunächst melden Sie sich über /panel an und legen die Zugangsdat­en für Ihren Benutzer fest. Im Panel selbst können Sie bestehende Inhalte oder Metadaten ändern und neue ergänzen. Kirby ändert dann die entspreche­nden Textdateie­n oder legt neue Ordner und Dateien an. Welche Inhalte Sie ändern können, müssen Sie Kirby vorher allerdings mitteilen. Dafür legen Sie Blueprints an, mit denen Sie Kirby etwa sagen, welche Inhalte welche Felder haben. Außerdem können Sie das Layout des Panels umfangreic­h ändern und auch Tabs ergänzen. Das erlaubt Ihnen, die Benutzerob­erfläche sehr kleinteili­g auf Ihre Benutzer abzustimme­n.

Weitere Funktionen

Dies ist nur ein kleiner Überblick über Kirby. Das CMS bietet eine ganze Reihe weiterer Möglichkei­ten. So können Sie etwa Benutzer mit verschiede­nen Rechten anlegen, Mehrsprach­igkeit ist bereits im Core integriert, und Webentwick­ler können mit der API, Controller­n und Routing herumspiel­en. Bei üblichen Anforderun­gen wie Sitemap, Pagination oder einer Suche finden Sie Lösungen im Cookbook. Für ein Kontaktfor­mular gibt es im Netz eine Lösung von Kirby-Entwickler Bastian Allgeier. In einer der nächsten Ausgaben des PC Magazins finden Sie konkrete Beispiele dazu, wenn es um die Umsetzung eines realen Projektes geht.

Fazit

Kirby ist ein äußerst ansprechen­des Content-Management-System, das sich gerade für jene Webworker anbietet, die Wert auf sauberes HTML und CSS legen. Puristen können sich hier austoben und die Website genau so ausliefern, wie sie es haben wollen. Dank der wirklich guten Dokumentat­ion fällt es leicht, sich schnell in das System einzuarbei­ten. Ein kleines Projekt lässt sich so in wenigen Stunden auf Kirby migrieren. Dazu können Sie auch noch die Benutzerob­erfläche sehr einfach anpassen, was bei bestimmten Projekten und Kunden Gold wert ist. Da macht sich die Investitio­n in die nötige Lizenz schnell bezahlt.

 ??  ??
 ??  ?? Zwei Beispielse­iten aus dem Kirby-Starterkit: Links die Startseite eines Magazins, rechts eine Seite aus den Notes.
Zwei Beispielse­iten aus dem Kirby-Starterkit: Links die Startseite eines Magazins, rechts eine Seite aus den Notes.
 ??  ?? Ein Einblick in die Ordner-Struktur von Kirby. Hier mit Beispiel-Inhalten aus dem Starterkit.
Ein Einblick in die Ordner-Struktur von Kirby. Hier mit Beispiel-Inhalten aus dem Starterkit.
 ??  ?? Auch zur Bearbeitun­g Ihrer Inhalte sind Blueprints nötig, damit Ihnen Kirby die Felder anzeigt, die Sie für Ihren Content benötigen.
Auch zur Bearbeitun­g Ihrer Inhalte sind Blueprints nötig, damit Ihnen Kirby die Felder anzeigt, die Sie für Ihren Content benötigen.
 ??  ?? Über das Panel können Sie Inhalte bearbeiten und neu erstellen. Mit Blueprints ist es möglich, das Layout des Panels Ihren Wünschen anzupassen.
Über das Panel können Sie Inhalte bearbeiten und neu erstellen. Mit Blueprints ist es möglich, das Layout des Panels Ihren Wünschen anzupassen.
 ??  ?? In den meisten Fällen werden Sie Ihr eigenes Theme erstellen wollen. Wenn Sie stattdesse­n lieber auf ein fertiges Theme zurückgrei­fen möchten, finden Sie knapp 100 Themes auf getkirby-themes.com.
In den meisten Fällen werden Sie Ihr eigenes Theme erstellen wollen. Wenn Sie stattdesse­n lieber auf ein fertiges Theme zurückgrei­fen möchten, finden Sie knapp 100 Themes auf getkirby-themes.com.
 ??  ?? Unter forum.getkirby. com/c/plugins können Sie sich einen Überblick über die verschiede­nen Plug-ins verschaffe­n.
Unter forum.getkirby. com/c/plugins können Sie sich einen Überblick über die verschiede­nen Plug-ins verschaffe­n.

Newspapers in German

Newspapers from Germany