Der folgende Beitrag ist ein Gastbeitrag von Mike Neumegen von CloudCannon. Mike und ich sprachen über die Erstellung einer kleinen Serie zum Erstellen von Jekyll-Websites, worauf ich natürlich sofort einging, da Jekyll großartig ist und mehr Wissen über statische Website-Generatoren eine gute Sache ist. Vollständiger Offenlegung halber: Mikes Firma CloudCannon ist ein CMS auf Jekyll-Basis. Als Teil dieser Serie wird er Ihnen zeigen, wie Sie dies nutzen können, daher habe ich darum gebeten, dass es ein gesponserter Beitrag wird.
Artikelserie
Statische Website-Generatoren sind nicht mehr nur ein Werkzeug für persönliche Blogs von Entwicklern. Viele Unternehmen setzen auf statische Technologie für ihre öffentlich zugänglichen Websites, darunter Netflix, GitHub und Atlassian.
Jekyll ist der beliebteste statische Website-Generator. Er nimmt Quelldateien entgegen und generiert eine Website aus statischen Seiten im Voraus, die direkt an die Benutzer ausgeliefert werden können. Dies unterscheidet sich von der Funktionsweise eines herkömmlichen CMS wie WordPress. WordPress verwendet eine serverseitige Sprache und eine Datenbank, um eine Seite zu generieren, wenn diese von einem Benutzer angefordert wird.
In dieser Serie behandeln wir die Grundlagen der Entwicklung von Websites mit Jekyll. Wir beginnen mit der Konvertierung einer statischen Website in Jekyll, fügen ein CMS für Nicht-Entwickler mit CloudCannon hinzu und erstellen dann ein kommentarsystem mit Firebase.
Dieses Tutorial erstellt eine Website für ein fiktives Café namens Coffee Cafe. Hier ist eine Demo.

Jekyll installieren
Jekyll ist ein Befehlszeilentool, das vor der Verwendung installiert werden muss.
OS X
$ gem install jekyll -v 2.4.0
Ubuntu
$ apt-get install ruby ruby-dev make gcc nodejs
$ gem install jekyll -v 2.4.0
Windows
Windows wird nicht offiziell unterstützt, aber es gibt eine Umgehungslösung.
Setup
Laden Sie die Quelldateien für Coffee Cafe herunter, wenn Sie folgen möchten.
Führen Sie Jekyll aus, um die Website zu erstellen und anzuzeigen. Navigieren Sie im Terminal zum Verzeichnis und führen Sie aus
$ cd path/to/site/files
$ jekyll serve
jekyll serve erstellt die statische Website im Verzeichnis _site im selben Ordner und startet lokal einen Webserver. Navigieren Sie in Ihrem Browser zu https://:4000, um Coffee Cafe anzuzeigen.
Jekyll-Layouts
Wiederholender Inhalt ist das größte Problem einer rein statischen Website. Jekyll-Layouts lösen dieses Problem. Ein Layout ist eine HTML-Datei im Ordner `_layouts` mit Platzhaltern für Inhalte.
Ein Layout erstellen
In Coffee Cafe sind div.content und title die einzigen Elemente, die sich pro Seite ändern. Der einfachste Weg, ein Layout zu erstellen, ist das Kopieren einer bestehenden HTML-Datei. Kopieren Sie `index.html` nach `_layouts/default.html` und ersetzen Sie den Inhalt von div.content durch {{ content }}.
</header>
<div class="content">
{{ content }}
</div>
<footer>
{{ content }} ist ein Liquid-Tag, der Teil der Vorlagensprache von Jekyll ist.
Ein Layout festlegen
Um `index.html` das Standardlayout zuzuweisen, verwenden wir Front Matter, einen YAML-Schnipsel am Anfang der Datei zwischen drei Bindestrichen.
Um das Layout von `index.html` festzulegen
- Aktualisieren Sie den Inhalt der Datei, sodass nur der Inhalt von
div.contententhalten ist - Fügen Sie
layout: defaultzum Front Matter hinzu
---
layout: default
---
<section class="hero">...</section>
<div class="container">...</div>
<section class="cta">...</section>
Die Indexseite wird mit dem Standardlayout generiert und der Dateiinhalt wird anstelle von {{ content }} eingefügt. Die Website sollte genauso aussehen wie zuvor. Wiederholen Sie den gleichen Vorgang für alle anderen HTML-Dateien.
Seitenvariablen verwenden
Um den title jeder Seite anzupassen, legen wir eine Front-Matter-Variable auf jeder Seite fest und verwenden sie im Layout. Fügen Sie die Variable title zu `index.html` hinzu
---
layout: default
title: Home
---
...
Geben Sie die Variable in _layout/default.html mit Liquid aus
...
<title>{{ page.title }}</title>
...
Der Titel-Tag ändert sich nun zwischen den Seiten. Dies reduziert unnötige Duplizierung auf der Website, sodass Sie zukünftige Änderungen an einem Ort vornehmen können.
Bloggen
Das Hinzufügen von Beiträgen ist fast der gleiche Vorgang wie das Hinzufügen einer Seite. Beiträge sind Markdown- oder HTML-Dateien im Ordner `_posts` mit einem Dateinamen, der mit :year-:month-:day-:title.:extension formatiert ist.

Beiträge schreiben
Der Inhalt eines Beitrags ist derselbe wie bei einer Seite: ein Front-Matter-Header und der Inhalt der Datei. Erstellen Sie eine Datei namens `_posts/2016-01-01-what-is-coffee.md`, fügen Sie dann das Front Matter hinzu, gefolgt vom Inhalt des Beitrags.
---
layout: post
title: What is Coffee?
category: Information
---
Coffee is a brewed drink prepared from roasted coffee beans, which are the seeds of berries from the Coffea plant. The Coffea plant is native to subtropical Africa and some islands in southern Asia. The plant was exported from Africa to countries around the world and coffee plants are now cultivated in over 70 countries, primarily in the equatorial regions of the Americas, Southeast Asia, India, and Africa. The two most commonly grown are the highly regarded arabica, and the less sophisticated but stronger and more hardy robusta. Once ripe, coffee beans are picked, processed, and dried. Green (unroasted) coffee beans are one of the most traded agricultural commodities in the world. Once traded, the coffee beans are roasted to varying degrees, depending on the desired flavor. Roasted beans are ground and brewed to produce coffee as a beverage.
Source / Read more [Wikipedia](https://en.wikipedia.org/wiki/Coffee).
Diese Trennung von Markup und Daten ist Kern der Jekyll-Philosophie. Dies ermöglicht die Wiederverwendung des Inhalts an jeder Stelle der Website.
Ein Beitrags-Layout erstellen
Das obige Beispiel verwendete ein neues Layout namens post. Dieses Layout erweitert das Standardlayout und fügt beitragsbezogene Elemente hinzu, wie z. B. das Veröffentlichungsdatum und die Kategorie. Um dies in Jekyll zu erreichen, geben wir ein Layout innerhalb eines Layouts an. Kopieren Sie Folgendes in `_layouts/post.html`
---
layout: default
---
<div class="container">
<h2 class="spacing">{{ page.title }}</h2>
<div class="blog-post spacing">
<p class="summary">{{ page.category }}<span class="date">{{ page.date | date: '%B %d, %Y' }}</span></p>
{{ content }}
</div>
</div>
Mithilfe von Liquid geben wir jede Variable aus dem Front Matter aus, genau wie wir title oben ausgegeben haben. Die Datumsvariable wird mit einem Liquid-Filter formatiert.
Beiträge auflisten
Der letzte Schritt ist das Auflisten der Blogbeiträge in blog.html. Verwenden Sie eine Liquid for-Schleife, um für jeden Beitrag in site.posts ein Element zu erstellen
---
layout: default
title: Blog
---
<div class="container">
<h2 class="spacing">Blog</h2>
<div class="blog-posts">
{% for post in site.posts %}
<div class="blog-post spacing">
<h3><a href="{{ post.url }}">{{ post.title }}</a></h3>
<p class="summary">
{{ post.category }}
<span class="date">
{{ post.date | date: '%B %d, %Y' }}
</span>
</p>
{{ post.excerpt }}
</div>
{% endfor %}
</div>
</div>
Jekyll stellt integrierte Variablen bereit, die hier verwendet werden und nicht im Front Matter definiert sind
urlist die generierte URL für den Beitrag, die normalerweise/:categories/:year/:month/:day/:title.htmllautet, aber es gibt viele Konfigurationsoptionenexcerptist ein Ausschnitt aus dem Anfang des Beitragsinhaltscontentwird hier nicht verwendet, aber es zeigt den gesamten Inhalt des Beitrags an, genau wie{{ content }}in den Layouts
Alles erledigt
In wenigen Minuten sind wir von einer statischen Website zu einer Jekyll-Website mit einem Blog gelangt. Hier ist ein Download-Link für die finale Jekyll Coffee Cafe Website.
Bleiben Sie dran in den nächsten Tagen, während wir diese Website mit leistungsstarken Bearbeitungsfähigkeiten und Funktionen aufwerten.
Wenn es Italiener gibt, die das lesen, habe ich einen sehr ähnlichen Beitrag auf dieser Website mit einer Windows-Installation von Jekyll geschrieben: http://www.webhouseit.com/creare-siti-e-blog-statici-con-jekyll/
Das könnte für diejenigen nützlich sein, die kein Englisch sprechen :)
Ihr Timing könnte nicht besser sein, da ich dies gerade für kleine Kunden in Betracht ziehe. Danke!
Ausgezeichnetes Tutorial, ich kann die nächsten Teile kaum erwarten!
Super Tutorial! Gibt es einen Grund, warum Sie in diesem Tutorial Version 2.4 verwenden? Jekyll ist jetzt in Version 3.0.3, die jede Menge nette neue Funktionen mitbringt. GitHub Pages (das viele Jekyll-Website-Besitzer als Hosting nutzen, mich eingeschlossen) läuft ebenfalls auf Jekyll 3.
Hallo Pawel,
Gut bemerkt, im nächsten Schritt geht es im Tutorial um die Verwendung von CloudCannon, das derzeit nur Jekyll 2.4 unterstützt (wir arbeiten daran, in naher Zukunft alle Jekyll-Versionen zu unterstützen).
Mike
Toller Beitrag, danke. Ich habe nach einem statischen Website-Generator gesucht, um meine Hobby-Website zu betreiben, die nur als Flat-File-System mit Dreamweaver eingerichtet ist.
Ist Jekyll für mittelgroße (500 Seiten plus) statische Websites geeignet?
Wie funktioniert das Templating, oder ist es wirklich so einfach wie die Verwendung einer vorhandenen HTML-Seite?
Danke
Andy
Hallo Andy,
Ja, Jekyll ist für Ihre Website gut geeignet. Werfen Sie einen Blick auf den Abschnitt "Jekyll-Layouts" im obigen Tutorial, um zu sehen, wie das Templating funktioniert. Es sind alles HTML-Dateien mit einfachem Liquid.
Mike
Nur zur Anmerkung aus dem vorherigen Beitrag: Ich bin nicht komplett steinzeitlich, da ich meine HTML-Seiten als PHP ausliefere, um Fußzeilen, Kopfzeilen, Seitenleisten usw. importieren zu können.
Macht Jekyll vermutlich etwas Ähnliches?
Entschuldigung für die Noob-Fragen.
Danke
Andy
Ja, das tut es. Der Unterschied liegt darin, wie jemand die Website betrachtet. In der PHP-Version müssen die Abschnitte ad hoc eingebunden werden, während in Jekyll die Website im Voraus erstellt wird, sodass die Abschnitte bereits eingebunden sind.
Mike
Ich habe versucht, die Tutorial-Dateien zu verwenden, und einen Standard-Download von Jekyll, und beide zeigen die "Seite nicht gefunden"-Seite an, wenn ich auf die URL klicke.
Hm, sie funktionieren bei mir. Versuchen Sie, sie über die GitHub-Oberfläche herunterzuladen. Die Jekyll-Website befindet sich auf dem Jekyll-Zweig.
https://github.com/CloudCannon/coffee-cafe
Das Demo ist sehr amateurhaft. Auf Mobilgeräten ist das Menü nicht responsiv und es gibt sogar eine horizontale Scrollleiste.
Vielen Dank für das Feedback. Ich habe die Stile repariert, damit die Demo-Website jetzt mobilfreundlich ist.
Ich habe dies auf einer statischen Website ausprobiert, alles wird OK generiert, aber ich sehe keinen `_layouts`-Ordner. Ich habe einen `_site`-Ordner, aber keinen `_layouts`. Muss ich diesen manuell erstellen?
Hallo John,
Ja, das ist richtig. Sie müssen das Verzeichnis `_layouts` erstellen.
OK, danke, wo genau in der Dateistruktur kommt dieser Ordner hin?
Hallo John,
_layouts befinden sich im Stammverzeichnis Ihrer Website. Den Quellcode der abgeschlossenen Website können Sie hier einsehen – https://github.com/CloudCannon/bakery-store/tree/jekyll