Codebeispiele für Navigations-Strukturen

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();

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert