Die Seitenkollektion rekursiv mit Yellow auflisten
Datenstrom Yellow zeigt in der Standardinstallation die verfügbaren Ordner bzw. Kategorien an. Wollen Sie jedoch Ordner mit den enthaltenen Beiträgen anzeigen, kann Ihnen das folgende Listing weiterhelfen:
<?php
$pages = $this->yellow->content->index(true, true);
foreach ($pages as $page) {
if ($page->getParent()) {
echo '<a href="'.$page->getUrl().'" class="small">'.$page->getHtml("title").'</a> - ';
}
else {
echo '<p class="my-3 lead"><a href="'.$page->getUrl().'">'.$page->getHtml("title").'</a></p>';
}
}
?>
Das Coding ermittelt die Seitenkollektion des gesamten CMS, während der IF prüft, ob eine Elternseite existiert oder nicht, ist dies der Fall werden die Beiträge eines Ordners aufgelistet, andernfalls handelt es sich um den Ordner selbst der als Absatz angezeigt wird. In etwa zeigt sich das folgende Schema.
- Ordner 1
- Artikel 1.1 - Artikel 1.2 - Artikel 1.3 - Artikel 1.4 - Artikel 1.5 - Artikel 1.6 - Artikel 1.7 - Artikel 1.8
- Ordner 2
- Artikel 2.1 - Artikel 2.2 - Artikel 2.3 - Artikel 2.4 - Artikel 2.5
Alternativen mit der Yellow CMS toolbox
Bekanntlich führen viele Wege nach Rom, so auch hier. Zwar ist das oben gezeigte Coding das kürzeste für diese Aufgabe aber es gibt noch weitere Befehle die das gleiche Resultat erbringen können. Die Yellow toolbox bietet zwei weitere Varianten:
toolbox->getDirectoryEntries($path, $regex = "/.*/", $sort = true, $directories = true, $includePath = true)
toolbox->getDirectoryEntriesRecursive($path, $regex = "/.*/", $sort = true, $directories = true, $levelMax = 0): array
Aus der Yellow toolbox können die Methoden getDirectoryEntries() oder getDirectoryEntriesRecursive() verwendet werden. In zwei kaskadierten Schleifen liefern sie ein ähnliches Ergebnis, allerdings arbeiten die beiden Methoden stärker auf LowLevel-Ebene, also auf der physikalischen Dateiebene.
Link zur Yellow Doku
https://datenstrom.se/de/yellow/help/api-for-developers#yellow-toolbox