Vorwort
Grundsätzlich werden die Inhalte eines Beitrags (post-xyz.md) oder einer Kategorie (index.md) als Array-Datenstrom verpackt und an die Template-Engine gesendet. Die Template-Engine Smarty ist in der Lage mit Hilfe der Template-Sprache den Datenstrom zu entpacken.
Hinweis: auch wenn Meta-Attribute wie
title,author,dateetc. als Standard gelten, so kann der Redakteur weitere individuelle Feler oder sogar komplexe YAML-Listen anlegen und im Template abfragen - dieser Bereich wird im übrigen YAML-Frontmatter genannt, da er mittels der einfachen YAML-Syntax formatiert wird.
$post
Im Array $post stecken die Daten des Beitrags, angereichert um die Metainformationen wie Title, Author, Date usw. Diese Daten können in klassischer PHP-Notation, unter Berücksichtigung der Smarty-Syntax, wie folgt verwendet werden:
{$post.title}
{$post.description}
{...}
um den Titel des Beitrags anzuzeigen.
$posts
Im Array $posts werden alle Beiträge (ohne Content) verpackt, die im aktuellen Verzeichnis zu finden sind. Die Inhalte können beispielsweise wie folgt angezeigt und entpackt werden:
{if !empty($posts)}
{foreach $posts as $post}
<a href="/{$post.slug|escape}">{$post.title|escape}</a>
<p>{$post.description|escape}</p>
{/foreach}
{/if}
Es ist zu empfehlen, vor dem Zugriff auf die Datenpakete zu prüfen, ob diese überhaupt existieren, um unnötige Fehlermeldungen zu vermeiden.
$categories
Dieser Kontainer kann im root der Webseite verwendet werden, um alle verfügbaren Kategorien zu ermitteln. Die Smarty-Templatelogik könnte etwa so aussehen:
{foreach $categories as $category}
<img src="{$category.logo}">
<a href="/{$category.slug|escape}">{$category.title|escape}</a>
{if !empty($category.description)}
<p class="small">{$category.description|escape}</p>
{/if}
{/foreach}
Mit diesem Loop können die wichtigen Eckdaten der jeweiligen Kategorie auf der Startseite (home) angezeigt werden oder sie können zum Aufbau von Menüeinträgen genutzt werden.
$post.cta
Die Verwendung von CTA (Call to Action) wird immer beliebter. LazyCMS unterstützt daher solche Funktionen standardmäßig. Im Text muss für die Aufnahem von CTA-Daten folgendes eingetragen werden:
---
title: Das ist ein Beitrag mit CTA
author: LazyCMS
cta:
- 'http://LazyCMS.de/Download
- Download Version 1.3
logo: /img/logo.svg
description: So werden Beiträge mit CTA, als YAML-List versehen
---
Auf der anderen Seite muss das Smarty-Template dieses Datenpaket entsprechend entpacken, etwa so:
{if !empty($post.cta)}
<a href="{$post.cta[0]}">{$post.cta[1]}</a>
{/if}
Auch hier ist es ratsam, per if zu prüfen, ob CTA-Daten existieren, erst dann sollten sie durch die Template-Engine angezeigt werden.
$post.password
LazyCMS bietet die Möglichkeit Beiträge mit einem Password sperren zu können, das ist besonders dann interessant, wenn der Inhalt ggf. mit einem Affiliate-Produkt in Verbindung steht, das der Leser eventuell zuvor erwerben muss. Die Angabe wird im YAML-Frontmatter wie folgt angegeben:
---
title: Der Beitrag ist geschützt
author: LazyCMS
password: lazycms
logo: /img/logo.svg
description: So wird ein Beitrag durch den Redakteur gesperrt
---
Versucht der Leser einen solchen Beitrag aufzurufen, wird er zur Eingabe des Password bzw. des Promotion-Codes aufgefordert.
Hinweis: Soll ein Attribut aus dem YAML-Frontmatter entfernt werden, kann die Zeile natürlich vollständig gelöscht werden, alternativ kann sie auch mit dem Hashtag
#auskommentiert werden, das ist oft praktischer.
Oliver Lohse
2025-11-19
CMS •
PHP •
Smarty •