yannsimon
I'm new here

Schleife über die ganze Struktur möglich

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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 Smiley Wink [Dann funktioniert im Beispiel aber natürlich pageref.filename nicht mehr, da Ordner keinen Dateinamen haben]

View solution in original post

0 Kudos
7 Replies
hoebbel
Crownpeak employee

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

0 Kudos

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?

0 Kudos

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.

0 Kudos

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 Smiley Wink [Dann funktioniert im Beispiel aber natürlich pageref.filename nicht mehr, da Ordner keinen Dateinamen haben]

0 Kudos

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

0 Kudos

UPS

Das Parent ist unnötig, da es keine Rolle spielt, von wo Du dir den Store holst Smiley Wink

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:

0 Kudos

Das Parent ist ja unnötig.

Danke!

0 Kudos