Fallunterscheidungen
Nicht immer sollen oder können im Frontmatter alle Daten angegeben werden. Um trotzdem eine sinnvolle Seite anzubieten müssen wir auf Basis der vorhandenen Informationen die Seite unterschiedlich darstellen können.
Lässt man den Schlüssel author
im Frontmatter einer beliebigen Seite einfach leer geschieht etwas unpraktisches: Das Trennzeichen zwischen Datum und dem Namen des Autors (ein • sofern nicht von euch verändert) erscheint auch dann, wenn der Autor garnicht bekannt ist. Das liegt daran, dass Jekyll fehlende Schlüssel einfach durch einen sog. “leeren String” abbildet. Dabei handet es sich um eine Abfolge an Zeichen, nur dass die Anzahl dieser Zeichen halt 0 ist. Möchte man den Autoren (samt dem Punkt) nur dann anzeigen, wenn er auch gesetzt worden ist, verwendet man dafür die sog. if
Anweisung.
{% if page.author %}
• {{ page.author }}
{% endif %}
Alle “Programmieranweisungen” der von Jekyll verwendeten Sprache Liquid werden durch Bereiche gekennzeichnet. Anders als bei HTML Elementen wird der Name des Bereichs nicht durch spitze Klammern, sondern durch {% name %}
bis {% endname %}
gekennzeichnet. Je nach verwendeter Anweisung wird der umschlossene Bereich dann unterschiedlich behandelt.
Im Falle der if
Anweisung wird der umschlossene Bereich nur dargestellt, wenn eine irgendwie geartete Form von Vergleich existiert. Steht nach dem if
nur der Name eines YAML Schlüssels, kann man den Code wie folgt lesen: Wenn der angegebene Schlüssel existiert, soll der vorhandene Bereich dargestellt werden. Das obige Beispiel gibt also den Namen des Autors und den Punkt nur aus, wenn der Schlüssel author
der Kategorie page
existiert.
Der else
Bereich
Nehmen wir mal an, wir möchten im Falle eines unbekannten Autors den Wert unbekannt ausgeben. Dazu verwenden wir die sog. else
Anweisung, deren Bereich immer dann dargestellt wird, wenn die Bereich der if
Anweisung nicht dargestellt wird.
{% if page.author %}
• {{ page.author }}
{% else %}
• <i>Autor unbekannt</i>
{% endif %}
Die speziellen Werte true
und false
Manchmal möchte man bestimmte Eigenschaften einer Seite nur ein- oder ausschalten, aber keine weiteren speziellen Eigenschaften vergeben. Für diese Fälle verwendet man die Werte true
und false
(engl. Wahr und Falsch).
---
test: false
---
{%if page.test %}
Wert ist bestimmt true: {{page.test}}
{%else%}
Wert ist bestimmt false: {{page.test}}
{%endif%}
- Sorgt auch in eurem Template für die Beiträge dafür, dass der Autorenname optional wird.
- Räumt den Beispielcode auf: Da der Punkt in beiden Bereichen erscheint, kann er auch nur einmal vor die Fallunterscheidung geschrieben werden.
- Fügt ein eigenes Attribut hinzu, dass z.B. den Inhalt des ganzen Beitrages ausblendet oder fett druckt, sofern der Wert auf
true
steht.
Vergleiche
Mit den logischen Werten true
und false
zu arbeiten ist nicht immer ausreichend, manchmal möchte man Dinge vergleichen. Wir wollen unser Bewertungssystem nun um drei Spezielle Ränge von Bewertern ergänzen. Bewerter auf dem Rang 0 sind wenig vertrauenswürdig, da über sie nicht viel bekannt ist. Bewerter mit Rang 1 haben in ihrem Profil einen Twitter oder Facebook Account hinterlegt, sind also etwas weniger anonym. Bewerter auf Rang 2 sind Kunden der Webseite, von denen die Adresse bekannt ist.
Der Betreiber der Seite möchte nun nicht jedes Produkt von jedem Kunden bewerten lassen. Einige Produkte ziehen möglicherweise Spaßbewertungen an, die ja nicht in allen Fällen erwünscht sind, und sollen deswegen nur von den “wichtigen” Bewertern rezensiert werden können. Wir haben es in diesem Beispiel also mit zwei verschiedenen Werten zu tun: Der Stufe des Bewerters und der Stufenfreigabe des Produktes.
---
bewerter:
stufe: 1
produkt:
stufe: 2
---
{% if bewerter.stufe >= produkt.stufe %}
Bewertung erlaubt
{% else %}
Bewertung verboten
{%endif%}