patric_dosch
I'm new here

Hat die aktuelle Seite Kinder, die in der Navigation sind

Jump to solution

Hallo Zusammen,

ich muss auf einer Seite wissen, ob die aktuelle Seite eine weitere Navigationsebene hat.

Ich habe hier im Forum einiges dazu gefunden. Nahe liegt #nav.hasSubFolders, diese kann aber nur in der Function im Header genutzt werden.

Leider muss ich diese Info außerhalb der Function wissen, da ich darauf reagieren muss (das Ergebniss eines ContentSelects wird statt der Navigation ausgegeben).

Mein erster Gedanke war, das Ergebnis der Navigation auf leer zu prüfen, leider finde ich der API nichts bezüglich de.espirit.firstspirit.generate.functions.NavigationFunctionImpl$StandardNavigation, daher fält es mir schwer zu wissen, wann eine Navigation nun tatsächlich leer ist.

Ich hoffe, ihr versteht was ich so vor habe Smiley Wink

Grüße, Patric

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo Patric,

wenn es hier darum geht, ob der Ordner, indem sich die aktuelle Seite befindet, noch Kinder hat, würde ich so vorgehen:

Der Vaterordner hat $CMS_VALUE(#global.node.parent.getChildren(#global.node.parent.class,false).toList().size)$ Kinder

Wenn Du allerdings Ordner mit sehr vielen Kindern hast und wenn Du auch noch wissen willst, ob die Ordner in der Navigation sichtbar sind, dann besser so:

$CMS_SET(navChildren,false)$

$CMS_FOR(folder,#global.node.parent.getChildren(#global.node.parent.class,false))$

$CMS_IF(folder.getFolderLangSpec(#global.language).isVisible())$

$CMS_SET(navChildren,true)$

$CMS_END_IF$

$CMS_END_FOR$

$CMS_IF(navChildren)$Navigationskinder sind da$CMS_END_IF$

Viele Grüsse aus Dortmund,

  Holger

View solution in original post

0 Kudos
3 Replies
hoebbel
Crownpeak employee

Hallo Patric,

wenn es hier darum geht, ob der Ordner, indem sich die aktuelle Seite befindet, noch Kinder hat, würde ich so vorgehen:

Der Vaterordner hat $CMS_VALUE(#global.node.parent.getChildren(#global.node.parent.class,false).toList().size)$ Kinder

Wenn Du allerdings Ordner mit sehr vielen Kindern hast und wenn Du auch noch wissen willst, ob die Ordner in der Navigation sichtbar sind, dann besser so:

$CMS_SET(navChildren,false)$

$CMS_FOR(folder,#global.node.parent.getChildren(#global.node.parent.class,false))$

$CMS_IF(folder.getFolderLangSpec(#global.language).isVisible())$

$CMS_SET(navChildren,true)$

$CMS_END_IF$

$CMS_END_FOR$

$CMS_IF(navChildren)$Navigationskinder sind da$CMS_END_IF$

Viele Grüsse aus Dortmund,

  Holger

0 Kudos

Danke, das paßt, auch wenn es etwas unheimlich aussieht.

Mir hat der Teil mit getChildren(#global.node.parent.class,false) gefehlt, ist es hier auch möglich explizit den Type anzugeben?

0 Kudos

Hallo Patric,

Patric Dosch schrieb:

Danke, das paßt, auch wenn es etwas unheimlich aussieht.

Mir hat der Teil mit getChildren(#global.node.parent.class,false) gefehlt, ist es hier auch möglich explizit den Type anzugeben?

Ähm - #global.node.parent.class gibt bereits den Typ an Smiley Wink

#global.node --> aktuelle Seitenreferenz

.parent --> der "Vaterknoten", also der Ordner, in dem sich die Seitenreferenz befindet

.class --> Die Klasse des Ordners.

Die Methode liefert also alle Kinder des Ordners zurück, die ebenfalls Ordner sind. Da für die Vererbung "false" (also keine Vererbung) angegeben wird, werden nur die direkten Kinder zurückgeliefert.

Viele Grüsse aus Dortmund,

  Holger

0 Kudos