hkarl
I'm new here

Prüfen auf Unterordner / Subfolder und ob diese nicht sichbar sind

Hallo,

ich möchte in der Navigation prüfen ob ein Menü-Punkt Unterordner hat und ob der Unterordner nicht sichtbar ist.

Also ich besitze in der Struktur ein Ordner der einen Unterordner hat, der Unterordner ist im Navigationsmenü nicht sichtbar.

Jetzt soll ich den Menü-Punkt auf eine andere Art auspielen als die restlichen Menüpunkte (also die Menü-Punkte die Unterordner haben und die die keine haben).:smileyangry:

Sprich muss die Abfrage genau auf meine Sonderfall ansprechen.

Hier mein Versuch dies im Code:

<CMS_FUNCTION name="Navigation" resultname="fr_subStartNodeCheckSubfolders">       

     <CMS_PARAM name="expansionVisibility" value="purepath"/>

     <CMS_PARAM name="wholePathSelected" value="1"/>

     <CMS_PARAM name="siteMap" value="1"/> 

     <CMS_ARRAY_PARAM name="selectedHTML">

          <CMS_ARRAY_ELEMENT index="0"><![CDATA[$CMS_IF(#nav.hasSubFolders)$$CMS_SET(set_hasSub, true)$$CMS_ELSE$$CMS_SET(set_hasSub, false)$$CMS_END_IF$]]></CMS_ARRAY_ELEMENT>

     </CMS_ARRAY_PARAM>

</CMS_FUNCTION>

$CMS_IF(set_hasSub.toString.equals("true") && !#global.node.getChildren().getFirst().folderLangSpec(#global.language).isVisible)$

     $-- überprüfen, ob unterordner vorhanden und ob dieser nicht sichtbar ist --$

     $-- Menü-Punkt ausgeben --$

$CMS_END_IF$

Der erste Teil der IF funktioniert einwandfrei, aber der zweite Teil bekomm ich nicht funktionsfähig hin. Oder hab ich einen komplett falschen Ansatz.

Ich hoffe ich konnte für allgemeine Verwirrung sorgen.:smileyconfused:

Gibt es eine Möglichkeit / Prüfung um das zu ermittlen?:smileyplain:

Es sollen  nur Unterordner überprüft werden , die im Menü versteckt werden - also für die jeweilige Sprache nicht sichtbar sind.

Danke schonmal Smiley Happy

Grüße

Henning

8 Replies
kohlbrecher
Crownpeak employee

Hallo Henning,

das mit der allgemeinen Verwirrung hat funktioniert Smiley Wink.

Ich bin mir nicht ganz sicher aber eventuell hilft dir

#nav.hasSubFolders

schon weiter. So erfährst du zumindest, ob der aktuelle Navigationspunkt sichtbare Kinder hat.

Wenn dir das nicht hilft, hilft es uns vielleicht das gewünschte Ergebnis etwas genauer zu beschreiben.

Grüße

Jan

0 Kudos

Hi Jan,

Dann Versuch ich das ganze nochmal besser zu erklären.

Ich hab mal kurz eine Beispiel-Struktur aufgebaut (siehe Bild).

2015-07-16 10_46_22-Subfolder_invisible.png

Ich hoffe das Bild wird angezeigt! Smiley Happy

In der Navigation werden Menü-Punkte (sprich die Ordner 1 bis 4) unterschiedlich dargestellt.

1. Wenn ein Ordner Unterordner besitzt wird es auf Variante A ausgegeben. (Ordner 1 und Ordner 2)

2. Wenn ein Ordner keine Unterordner besitzt, wird es auf Variante B ausgegeben. (Ordner 3)

3. Wenn ein Ordner Unterordner besitzt und diese Unterordner nicht im Navaigationsmenü anzeigt werden sollen,  dann Variante C. (Ordner 4)

Mir es geht um Punkt 3 hier überprüf ich bereits außerhalb der Navigstionsfunktion erfolgreich ob der Ordner Unterordner besitzt, das erfolgt mit der extra angelegten CMS_Function (siehe oben). Dort ist #nav.hasSubFolders bereits enthalten.

Jetzt soll zudem nochüber die Strukturknoten geprüft werden, ob das Häckchen bei Optionen->Im Navigationsmenü anzeigen? nicht gesetzt wurde (sprich false ist).

Wie überprüfe ich das?

Grüße

Henning

0 Kudos

Hallo Henning,

wir hatte das gleiche Problem.

Du kannst in der Navigationsvorlage eine Formatvorlage aufrufen, die die Überprüfung auf die Sichtrbarbeit vornimmt (ungetestet).

Aufruf:

$CMS_RENDER(template:"has_visible_subfolders",context:"this",paramFolder:#nav.folder)$

$CMS_IF(set_ft_hasVisibleSubfolders)$

    $-- sichtbar --$

$CMS_END_IF$

Formatvorlage:

$CMS_SET(set_ft_pageFolderList,paramFolder.getChildren(class("de.espirit.firstspirit.access.store.sitestore.PageRefFolder"),false).toList())$

$CMS_IF(set_ft_pageFolderList.size() > 0)$

    $CMS_FOR(for_ft_pageFolder,set_ft_pageFolderList)$

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

            $CMS_SET(set_ft_hasVisibleSubfolders,true)$

            $CMS_SET(void,#for.BREAK)$

        $CMS_END_IF$

    $CMS_END_FOR$

$CMS_END_IF$

Viele Grüße

Mark

Hi Mark

Hab es jetzt erstmal kurzfristig mit einer Strukturvariable gelöst, was nicht unbedingt schön ist aber hier war mal wieder eine schnelle Umsetzung gefordert/gewünscht.

Bisher hab ich deinen Ansatz nur kurz angetestet:

Hier mal eine kleine Änderung,

$CMS_VALUE(set_ft_hasVisibleSubfolders,true)$

muss in

$CMS_SET(set_ft_hasVisibleSubfolders,true)$

geändert werden.

Dein Ansatz mit Formatvorlage gefällt mir schonmal.

Werde den Ansatz weiter nachgehen, wenn ich etwas mehr Zeit habe.

Danke und Grüße

Henning

0 Kudos

Danke für den Hinweis. Ich habe den Fehler korrigiert.

Viele Grüße

Mark

0 Kudos

Hallo Henning,

benötigst Du noch weitere Hilfe oder haben Dir die Antworten von Mark bereits geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Marian Zaplatynski

0 Kudos

In der ersten Zeile der Rendervorlagen noch folgenden Code ergänzen, dann rennt es

$CMS_SET(set_ft_hasVisibleSubfolders,false)$

STrojette
Returning Observer

Sorry für den Necro, aber das Thema ist noch immer nicht im Produkt gelöst.

Vielleicht mag der eine oder die andere meinen FR unterstützen?

https://community.crownpeak.com/t5/Feature-Discussions/New-nav-hasVisibleSubFolders-Function/idi-p/5...

0 Kudos