Pico CMS bietet das Plugin PicoPagesList, das weitere Beiträge des Ordners zeigt, alternativ kann diese Funktion mit Twig ohne Plugin realisiert werden
Das PicoPageList Plugin
Befindet sich der Leser in einem Beitrag und möchte von dort in andere Artikel verzweigen, die ebenfalls im selben Ordner liegen, dann kann man sich des Plugins PicoPagesList.php
bedienen und es in verschiedene Templates einhängen. Über dieses Plugin werden weitere Beiträge angezeigt, die sich im selben Ordner befinden.
Etwas nachteilig ist jedoch, das der Code für eine an sich simple Aufgabe, sehr kompliziert wirkt und das Layouting teilweise im Plugin erledigt werden muss.
PicoPagesList als Twig Modul
Wesentlich einfacher und der Aufgabenstellung angepasster, wird es mit einem Twig-Modul. Der Vorteil: der Code des Moduls ist sehr klein gehalten und die optische Gestaltung kann wie gewohnt im Template mit CSS-Mitteln erfolgen.
Der Twig-Code
Der Code ist mit wenigen Twig-Befehlen leichtgewichtig und gut verständlich aufgebaut:
{% set url = current_page.id %}
{% set path = "" %}
{% for section in url|split('/',-1) %}
{% set path = [path, section, '/']|join %}
{% endfor %}
<ul>
{% for page in pages(path)|sort_by("title") if not page.hidden %}
<li><a href="{{ page.url }}">{{ page.title }}</a></li>
{% endfor %}
</ul>
PicoPagesList als alternatives Twig-Modul
Codebeschreibung
Am Beginn des Moduls wird die aktuelle URL des geöffneten Beitrags, mit dem Befehl split()
in einzelne Bestandteile zerlegt. Die URL wird anhand der Slashes in ein Array aufgeteilt, wobei der Dateiname (Beitragsname) entfernt wird (-1)
. In der ersten for
-Schleife wird die URL zu einem neuen String zusammengesetzt und in path
kopiert.
Die Variable path
wird in der zweiten for
-Schleife verwendet, um das aktuelle Verzeichnis nach Beiträgen zu durchsuchen.
Einschränkung
Die Funktion des Twig-Moduls unterliegt mit seinen zehn Programmzeilen auch einer Einschränkung. Damit das Modul ein sinnvolles Ergebnis ermitteln kann, sollte es genau dann aufgerufen werden, wenn sich der Leser in einem Beitrag befindet, bzw. eine Markdown-Datei von Pico geöffnet wurde. Diese Einschränkung entsteht durch den Twig-Befehl url|split('/',-1)
, der immer den letzten URL-Teil entfernt, dies wäre der Beitragsname. Würde das Modul innerhalb eines Ordners oder Index gerufen werden, würde es eine falsche Struktur ermitteln.
Im Gegensatz dazu, ist das ursprüngliche Pico Plugin PicoPagesList.php
mit seinen etwa 250 Programmzeilen deutlich flexibler und Leistungsfähiger aber auch nur wenig spezialisiert wie das hier im Beitrags gezeigte Twig-Modul.
20.07.2024 Kontakt@Oliver-Lohse.de Breadcrumb Navigation PicoPagesList