Logo $post, $posts, $categories, $post.cta, $post.password

$post, $posts, $categories, $post.cta, $post.password


LazyCMS liefert einige verschiedene Daten-Typen des Contents an die Template-Engine, den Beitrag, Beiträge der Kategorie und die Kategorien.



Auf Instagram folgen



E-Mail Anfrage senden



Git des Entwicklers besuchen



Öffentlichen Jira Space besuchen

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, date etc. 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 •