Search the FirstSpirit Knowledge Base
Hallo, ich habe eine Frage zu den Inhaltsbereichen von Seitenvorlagen. Ich habe eine Seitenvorlage, in der es zwei Inhaltsbereiche gibt: "content" und "marginal". Für "content" habe ich bereits einige Absatzvorlagen als zugelassen eingetragen, für "marginal" noch nicht. Dann habe ich in der Inhaltsverwaltung eine neue Seite mit dieser Vorlage angelegt.
Nun möchte ich in der HTML-Ausgabe testen, ob für den "marginal"-Bereich Inhalte gepflegt wurden (ansonsten soll bei der Ausgabe des "content"-Bereichs noch eine weitere css-Klasse gesetzt werden).
Als Ansatz habe ich in der HTML-Ausgabe folgendes versucht:
$CMS_SET(isMarginalEmpty, #global.page.body("marginal").getChildren().isEmpty())$
Die Variable hat allerdings den Wert false, obwohl ich an der Seite keine Absätze gepflegt habe (geht ja auch nicht, weil noch keine zugelassen sind).
In der Doku finde ich unter #global.page und auch unter der API-Definition zu Body nichts, was mir hier helfen würde. Gibt es vielleicht einen anderen Weg, wie ich testen kann, ob der Inhaltsbereich leer ist?
Versuchen Sie mal: #global.page.body("marginal").getChildren().toList().isEmpty()
Das sollte funktionieren.
Versuchen Sie mal: #global.page.body("marginal").getChildren().toList().isEmpty()
Das sollte funktionieren.
Vielen Dank, das wars! Ich habe noch mal in der API-Doku nachgeschaut, und ich hatte mich dort verlesen...die Methode getChildren() gibt keine List, sondern ein Listable zurück. Wieder was gelernt!
Hallo,
#global.page.body("marginal").getChildren().toList().isEmpty()
das funktioniert so nur zufällig, da der Body-Knoten derzeit keine anderen Kind-Typen, außer Absätze (Section) haben kann.
Korrekt (zukunftssicher) wäre hier:
#global.page.body("marginal").getChildren(class("de.espirit.firstspirit.access.store.pagestore.Section")).getFirst() != null
Listable.getFirst() != null
sollte hier verwendet werden, damit bei vorhandenen Absätzen, die Liste nicht im Speicher aufgebaut werden muss, nur um zu prüfen, ob diese leer ist. Genau dafür ist die Methode #getFirst() da.
Danke, habe den Ausdruck noch mal angepasst. Funktioniert wie gewünscht