Navigations-Strukturen bieten in Statamic die Möglichkeit, komplexe Seitenbäume mit Seiten und Unterseiten aufzubauen. Folgende Code-Beispiele helfen beim Pflegen und Erstellen dieser Strukturen.
Struktur zurücksetzen
Um eine komplette Struktur einer Seite zurückzusetzen, kann man folgen Code nutzen:
use Statamic\Facades\Collection;
$structure = Collection::findByHandle("pages")->structure();
$tree = $structure->in("de");
$tree->delete();
Der Code würde die Struktur der de
Multisite zurücksetzen.
Struktur kopieren / synchronisieren
Folgendes Szenario: Ich habe eine Multisite-Website mit einer deutschen Variante und einer englischen Variante. Sowohl die deutsche als auch die englische Variante enthalten identisch die gleichen Seite, die per origin
miteinander verknüpft sind. Folgender Code kopiert die Struktur der deutschen Seiten, also des deutschen Seitenbaums auf die englischen Seiten bzw. den englischen Seitenbaum:
use Statamic\Facades\Collection;
$structure = Collection::findByHandle("pages")->structure();
$sourceTree = $structure->in("de");
$targetTree = $structure->in("en");
$targetTree->delete();
$dePages = $sourceTree->flattenedPages();
foreach ($dePages as $dePage) {
// If no translation is found => Skip
if (!$dePage->in("en")) {
continue;
}
if ($dePage->parent() && !$dePage->parent()->isRoot()) {
$targetTree->appendTo($dePage->parent()->in("en")->id, $dePage->in("en"));
} else {
$targetTree->append($dePage->in("en"));
}
}
$targetTree->save();