mario_harnisch
I'm new here

Navigation encodieren

Jump to solution

Hallo,

ich habe eine Herausforderung mit der Encodierung von Menünamen.

Der Menüname in der Struktur lautet bspw.: "Hilfreiches" Wissen => also mit Hochkomma

Über eine Navigationsfunktion aus Modul etracker wird ähnlich einer Breadcrumb die Ordnerstruktur herausgeschrieben, um diese für die etracker-Auswertung "Bereich" (area) zu verwenden.

=> Im obigen Fall wäre dies entsprechend: "/Newsticker/Meldung/"Hilfreiches" Wissen"

Das geschulte Auge erkennt sofort: hier stimmt entwas mit den Hochkommata nicht. Smiley Wink

Diese Ausgabe wird dann etracker übergeben und macht verständlicherweise Probleme in der Auswertung.

Glücklicherweise gibt es in FS nützliche Funktionen auf Strings, wie "encode".

In der Navigationsfunktion wird #nav.label benutzt, um den jeweiligen Knoten auszulesen. Laut Doku sollte dies auch einen String zurückgeben. Tut es aber nicht. Smiley Sad Aus diesem Grund kann ich hier also, soweit mir bekannt, das "encode" nicht nutzen.

Später im Code wird die Navigation in die Variable "area" geschrieben:

$CMS_SET(area, fr_navigation_etracker)$

Sowohl "area" und "fr_navigation_etracker" sind vom Typ "NavigationFunction", welche nicht in der API verzeichnet ist. Smiley Sad

Daher die Frage: wie schaffe ich es, dass die Navigation von Sonderzeichen befreit HTML-encodiert ausgegeben wird?

Am reellen Beispiel:

<script....

     ...    

     var et_areas = '$CMS_VALUE(area,default:"")$';

     ...

</script>

Spätestens im No-Skript-Teil gibt es Probleme:

<noscript>

     ...

     &amp;et_areas=$CMS_VALUE(area,default:"")$

     ...

</noscript>

Vielen Dank für Feedback Smiley Happy

Grüße

Mario

0 Kudos
12 Replies

Hey Jan Tilo,

das urlEncode kann ich nicht verwenden, da dann die Ausgabe in eTracker auch so aussieht. Ich benötige den html-encodierten String.

ReplaceAll: ja.. würde für den Fall funktionieren. Dann verwendet jemand aber doch ein anderes Zeichen, wie bspw. das einfache Hochkomma.. gut.. man _könnte_ jetzt für alle Sonderzeichen ein replace machen. Aber die Lösung setzte ich ein, wenn es sonst keine bessere gibt.

Das mit dem convert ist im Endeffekt ähnlich dem manuellen "replace".

Sonst kann FS doch auch encodieren.. warum hier nicht?

Viele Grüße

Mario

0 Kudos

Hey Peter,

das sieht doch gut aus.. teste ich gleich mal. Habe ich die Methode übersehen? *check doku*

Smiley Happy

Viele Grüße

Mario

0 Kudos

Hallo Peter und Jan Tilo,

ja.. super. etracker scheint es so zu "fressen". Ich habe die Methode total übersehen, scheinbar weil ich auf "encoden" fest gefahren war.

Vielen Dank nochmals für die Antworten!

Beste Grüße

Mario

0 Kudos