Search the FirstSpirit Knowledge Base
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
Grüße
Henning
Hallo Henning,
das mit der allgemeinen Verwirrung hat funktioniert .
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
Hi Jan,
Dann Versuch ich das ganze nochmal besser zu erklären.
Ich hab mal kurz eine Beispiel-Struktur aufgebaut (siehe Bild).
Ich hoffe das Bild wird angezeigt!
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
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
Danke für den Hinweis. Ich habe den Fehler korrigiert.
Viele Grüße
Mark
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
In der ersten Zeile der Rendervorlagen noch folgenden Code ergänzen, dann rennt es
$CMS_SET(set_ft_hasVisibleSubfolders,false)$
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?