Verzeichnisse mit Twig verarbeiten

Dieser Beitrag zeigt Ihnen, wie Sie dynamische Templates anlegen, um damit den Content aus verschiedenen Ordner in Ihrer Webseite anzeigen zu können.

Inhalt

Verzeichnisse verarbeiten

Nutzen Sie das Flatfile CMS Pico, dann sind Sie bereits über das index.twig Template gestoßen. Zudem haben Sie sicherlich auch das Codebeispiel für die Blog-Ansicht gesehen (siehe hier). Mit Hilfe dieses Loop können Sie Beiträge aus Verzeichnissen (Blog-Verzeichnis) anlisten. Arbeiten Sie jedoch mit verschiedenen Verzeichnissen ähnlich wie Kategorien wird es etwas umständlich, denn Sie müssten für jedes Verzeichnis eine eigene index.twig anlegen das den Pfadnamen des zu listenden Ordners fest enthält.

...
{% for page in pages("blog")|sort_by("time")...
...

Code

In etwa kennen Sie das obige Beispiel aus der Standardinstallation des Pico CMS. Würden Sie also verschiedene Ordner haben, dann müssten Sie verschiedene index-xyz.twig erzeugen, in denen die diversen Ordner fest vergeben sind. Einfacher geht es, wenn Sie eine weitere Meta-Angabe in den *.md Datein einfügen. Legen Sie ein neues Attribut directory an, welches in jeder index.md den zu durchsuchenden Ordner repräsentiert.

~~~
Title:       Pico
Author:      Oliver Lohse
Date:        2020-04-25
Robots:      noindex,nofollow
Template:    index
directory:   pico
Description: Das freie CMS Pico...
~~~

Code

Das Beispiel oben zeigt den Metainhalt der index.md aus dem Ordner pico und verwendet das Template index.twig. Das Template index.twig kann den Inhalt in seiner loop-Section wie folgt auswerten:

027  {% for page in pages( meta.directory )|sort_by("time")|reverse if not page.hidden %}
028    <div class="row mb-5">
029      <div class="col-sm-5">
030        <h3><a href="{{ page.url }}">{{ page.title }}</a></h3>
031        <p class="small text-muted">{{ page.date_formatted }} &ensp; {{ meta.author }}</p>
032      </div>
033      <div class="col-sm-7">
034        <p class="excerpt">{{ page.description }}</p>
035      </div>
036    </div>
037  {% endfor %}

Code

Der bekannte Codeschnipsel aus dem Blog-Beispiel des Pico-Projektes (siehe hier)

Die Templatevariable

{{ meta.directory }} 

Code

in Zeile 27 legt in der for-Schleife den zu ladenden Ordner fest und der loop listet alle Beiträge sortiert ach Datum an.

Für das korrekte Funktionieren dieses sehr dynamischen Mechanismus ist es Bedingung, das Sie in jede index.md eines Ordners das Key-Value Paar directory: ordnername anlegen. Beachten Sie bitte auch, das die Groß-Kleinschreibung relevant ist, der Key Directory ist ein anderer Schlüssel als directory.


FlightCMS
2024-01-28
PHP8
post
0