Prinzessin
I'm new here

Wert aus Metadaten in Navigation auslesen FS5.0

Hallo, ich habe eine Navigation-Funktion zur Erstellung eines Menüs. Hier habe ich das Problem, dass mir im "unselectedHTML"-Bereich nie die der Wert der Metadaten-Variable "mt_menu_appearance" erscheint, obwohl einige Werte nicht leer sind und tatsächlich etwas drin steht.

Im "selectedHTML"-Bereich dagegen funktioniert es ohne Probleme und der Code dieser beiden Bereiche ist identisch.

Hier der Befehl um den es geht: $CMS_VALUE(#nav.ref.meta("mt_menu_appearance","inherit"))$

Die Metadaten werden auf Menufolder-Ebene gepflegt und nicht auf den Seitenreferenzen in der Struktur. Wir benutzen FS 5.0.

Hier die komplette Navigation-Funktion:

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

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

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

    <CMS_VALUE_PARAM name='root' value='"pageref:"+#global.node.meta("mt_homepage","inherit").uid.toString()'/>

    <CMS_ARRAY_PARAM name="innerBeginHTML">

        <CMS_ARRAY_ELEMENT><![CDATA[

            <ul class="isFlyout">

            <li class="info isDesktopOnly"><h2>Ihre Auswahl</h2></li>

            $CMS_IF(#nav.hasSubFolders)$<li class="scrollUp isMobileOnly"><span></span></li>$CMS_END_IF$

            <li class="back isMobileOnly"><a href="">zurück zu $CMS_VALUE(#nav.label.convert)$</a></li>]]>

        </CMS_ARRAY_ELEMENT>

        <CMS_ARRAY_ELEMENT><![CDATA[

            <ul class="isFlyout">

            <li class="back isMobileOnly"><a href="">zurück zu $CMS_VALUE(#nav.label.convert)$</a></li>]]>

        </CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM>

    <CMS_ARRAY_PARAM name="innerEndHTML">

        <CMS_ARRAY_ELEMENT index="0..7"><![CDATA[</ul></li>]]></CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM>

    <CMS_ARRAY_PARAM name="unselectedHTML">

        <CMS_ARRAY_ELEMENT index="0..2"><![CDATA[

            <li $CMS_IF(!#nav.ref.meta("mt_menu_appearance","inherit").isEmpty())$class="$CMS_VALUE(#nav.ref.meta("mt_menu_appearance","inherit"))$" $CMS_END_IF$><a href='$CMS_TRIM(level:2,char:"\n")$

                $CMS_SET(target,"")$

                $CMS_IF(#nav.ref.getPageLangSpec(#global.language).useExternalUrl())$

                    $CMS_VALUE(eval(#nav.ref.getPageLangSpec(#global.language).getUrl()))$

                    $CMS_SET(target,"_blank")$$CMS_ELSE$$CMS_REF(#nav.ref.referenceName)$

                $CMS_END_IF$' $CMS_IF(target == "_blank")$target="_blank"$CMS_END_IF$$CMS_END_TRIM$>$CMS_VALUE(#nav.label.convert)$</a>$CMS_IF(!#nav.hasSubFolders)$</li>$CMS_END_IF$]]>

        </CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM>

   

    <CMS_ARRAY_PARAM name="selectedHTML">

        <CMS_ARRAY_ELEMENT index="0..2"><![CDATA[

            <li class="active $CMS_VALUE(#nav.ref.meta("mt_menu_appearance","inherit"))$"><a href='$CMS_TRIM(level:2,char:"\n")$

                $CMS_SET(target,"")$

                $CMS_IF(#nav.ref.getPageLangSpec(#global.language).useExternalUrl())$

                    $CMS_VALUE(eval(#nav.ref.getPageLangSpec(#global.language).getUrl()))$

                    $CMS_SET(target,"_blank")$$CMS_ELSE$$CMS_REF(#nav.ref.referenceName)$

                $CMS_END_IF$' $CMS_IF(target == "_blank")$target="_blank"$CMS_END_IF$$CMS_END_TRIM$>$CMS_VALUE(#nav.label.convert)$</a>$CMS_IF(!#nav.hasSubFolders)$</li>$CMS_END_IF$]]>

        </CMS_ARRAY_ELEMENT>

    </CMS_ARRAY_PARAM>

   

   

</CMS_FUNCTION>

0 Kudos
1 Reply
stephan
I'm new here

Hallo Frau Neubauer,

ich habe mit ihrem Code einmal versucht das Problem hier lokal nachzustellen. Wenn ich die Metadatenvariable im Rootordner setze oder in einem der Unterordner werden die Werte an allen relevanten Stellen korrekt angezeigt. Vorraussetzung ist jedoch das sich mindestens eine Seitenreferenz im Ordner befindet. Zur Veranschaulichung einmal ein Screenshot:

metadata_problem.png

(U = unselectedHtml, S = selectedHtml, mt_menu_appearance gesetzt auf "Über uns" und "Ebene 2")

Was mir in ihrem Code aufgefallen ist, funktioniert bei ihnen:

#global.node.meta("mt_homepage","inherit").uid.toString()

wenn

#global.node.meta("mt_homepage","inherit")

einen String liefert auf dem die uid-Methode nicht existiert?

0 Kudos