Search the FirstSpirit Knowledge Base
Hallo,
Um eine Schleift üer die ganze Struktur zu haben benutze ich gerade die Funktion Navigation.
<CMS_FUNCTION name="Navigation" resultname="prettyConfiguration">
<CMS_PARAM name="expansionVisibility" value="all"/>
<CMS_PARAM name="wholePathSelected" value="0"/>
<CMS_PARAM name="siteMap" value="1" />
[...]
Aber die Funktion kann nicht Seiten zugreifen, wenn die Seiten nicht im Sitemap dargestellt werden.
Gibt es einen anderen Parameter, um die ganze Struktur zuzugreifen?
Oder eine andere Funktion?
In der Doku habe ich nichts gefunden.
Yann
Um an alle Seitenreferenzen in der Struktur zu kommen, würde diese kleine Schleife ausreichend sein, die auf einer Seitenreferenz ausgeführt werden uss (also einer in der Struktur verlinkten Seite)
$CMS_FOR(pageref,#global.node.store.children(#global.node.class,true))$
$CMS_VALUE(pageref.filename)$<br>
$CMS_END_FOR$
Erläuterung:
#global.node.store --> Strukturwurzel.children(#global.node.class,true) --> rekursiv alle Kinder vom Typ "Seitenreferenz"
Statt dann den Dateinamen wie hier im Beispiel auszugeben, kannst Du Dir natürlich die Metadaten der entsprechenden Seitenreferenz holen und die wie benötigt ausgeben.
Tipp: Wenn Du doch über die Ordner anstelle der Seitenreferenzen iterieren willst, dann gib als Klasse für die Kinder #global.node.parent.class an [Dann funktioniert im Beispiel aber natürlich pageref.filename nicht mehr, da Ordner keinen Dateinamen haben]
Hallo Yann,
was hast Du denn genau vor?
Zwar kann man problemlos per Skript über die Struktur iterieren - die Frage ist aber, warum Du diese relativ "teure" Operation überhaupt durchführen willst.
Viele Grüsse aus Dortmund,
Holger
Hallo Holger,
ich möchte Metadaten für jede Seite in einer Konfigurationsdatei exportieren, so dass die Applikation diese Metadaten wiederverwenden kann.
Ist eine Iteration per Skript "teurer" als die Funktion Navigation?
Nein - grundsätzlich ist die Iteration per Skript nicht teurer als die Funktion Navigation - da beide Implementierungen über den Baum laufen. Es sei denn die Navigations-Funktion greift geschickt auf Caches zurück, die bereits gefüllt sind.
Eine exakte Antwort kann aber nur die JavaDoc liefern, die aktuell leider ziemlich dürftig ist.
Um an alle Seitenreferenzen in der Struktur zu kommen, würde diese kleine Schleife ausreichend sein, die auf einer Seitenreferenz ausgeführt werden uss (also einer in der Struktur verlinkten Seite)
$CMS_FOR(pageref,#global.node.store.children(#global.node.class,true))$
$CMS_VALUE(pageref.filename)$<br>
$CMS_END_FOR$
Erläuterung:
#global.node.store --> Strukturwurzel.children(#global.node.class,true) --> rekursiv alle Kinder vom Typ "Seitenreferenz"
Statt dann den Dateinamen wie hier im Beispiel auszugeben, kannst Du Dir natürlich die Metadaten der entsprechenden Seitenreferenz holen und die wie benötigt ausgeben.
Tipp: Wenn Du doch über die Ordner anstelle der Seitenreferenzen iterieren willst, dann gib als Klasse für die Kinder #global.node.parent.class an [Dann funktioniert im Beispiel aber natürlich pageref.filename nicht mehr, da Ordner keinen Dateinamen haben]
Thanks!
Ich habe am Ende das folgende benutzt:
CMS_FOR(pageref,#global.node.parent.store.children(#global.node.class,true))$
$CMS_VALUE(pageref.filename)$
$CMS_END_FOR$
#global.node.parent.store -> Ich weiss, dass meine Seite ganz oben in der Struktur steht
.children(#global.node.class,true) -> alle Kinder vom Typ "Seitenreferenz", rekursiv
UPS
Das Parent ist unnötig, da es keine Rolle spielt, von wo Du dir den Store holst
Aber das ich das ,true für rekursuv vergessen habe, ist schon echt peinlich :smileyshocked:
Ich korrigiere mal still und heimlich die "korrekte" Antwort :smileyblush:
Das Parent ist ja unnötig.
Danke!