Yellow: Felder nutzen

Eine Superkraft des Yellow-CMS ist die Möglichkeit, Informationen zu Seiten – wie Blogartikeln – in Feldern zu speichern und bei der Darstellung zu nutzen. In diesen Feldern werden bereits von Haus aus Metainformationen wie der Titel, das Veröffentlichungsdatum oder die Tags gespeichert. Nach eigenen Wünschen lassen sich hiermit neue Funktionen für die eigene Seite bauen.

Anwendungsfälle

Ich nutze Felder beispielsweise für drei Anwendungsfälle:

  • Steuerung, ob die „Kommentiere!“-Schaltfläche am Ende der Seite angezeigt werden soll
  • Auswahl des Icons vor dem Titel der Seite als eine Art der Kategorie
  • Änderungsdatum der Seite

Anpassung der Vorlage

Füge ich einen Artikel über Yellows Webeditor hinzu, wird die Vorlage content/shared/page-new-blog.md verwendet und Werte somit vorbelegt. Meine sieht so aus:

---
Title: Blogseite
TitleSlug: blogseite
Published: @date
Layout: blog
Tag: eins, zwei
Icon: default
Status: draft
CommentButton: false
---
Dies ist eine neue Blogseite.
[--more--]

Ergänzt habe ich Icon: default und CommentButton: false. Letzteres lösche ich in der Regel, denn ich möchte ja eigentlich, dass meine Kommentar-Schaltfläche angezeigt wird, will aber die Möglichkeit haben, fallweise darauf zu verzichten.
Als Wert für Icon kann ich die jeweilige fontawesome-Bezeichnung nutzen, wenn die Icon-Extension installiert ist. So etwa „book“ oder wie für diesen Artikel „code“.

Möchte ich auch das Editier-Datum eines Artikels angeben, würde ich unter Published den Wert Edited setzen. Hierfür könnte man zwar auch das technische Änderungsdatum der Datei – denn in Yellow ist ja jede Seite und jeder Artikel eine Datei – abfragen, aber ich möchte nicht wirklich jede Änderung berücksichtigen, sondern nur wesentliche. Neue Kommentare beispielsweise schreibe ich in die Datei zum Beitrag. Dadurch wäre das Bearbeitungsdatum verändert, am eigentlichen Inhalt des Beitrages hat sich aber ja nichts getan.

Berücksichtigung im HTML

In der /system/layouts/blog.html nutze ich dann die Felder-Inhalte. Hier das Beispiel für die Kommentar-Schaltfläche:

<?php if ($this->yellow->page->get("CommentButton") != "false"): ?>
  <a class="btn" href="mailto:...">
    <i class="icon icon-pencil-square-o icon-2x" style="margin-right: 5px;"></i> Kommentiere!
  </a>
<?php endif; ?>

Das Änderungsdatum frage ich in der gleichen Datei wie folgt ab:

if ($this->yellow->page->get("edited")) {
  echo ', ' . formatDateForDisplay($this->yellow->page->getDate("edited"), "edited") . ' zuletzt überarbeitet';
}

Und dies sind nur Beispiele für die vielen Möglichkeiten, die Yellow durch Felder bietet. Viel Spaß beim Ausprobieren!


Kommentare

14.02.2025 - Denis meint dazu:

Die Power von YAML! Finde ich bemerkenswert, dass Yellow das so gut umsetzt. Ich werde es im Blick behalten, falls mir Static Site Generators zu mühevoll werden.

Kommentiere!