Search the FirstSpirit Knowledge Base
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.
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. 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.
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>
...
&et_areas=$CMS_VALUE(area,default:"")$
...
</noscript>
Vielen Dank für Feedback
Grüße
Mario
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
Hey Peter,
das sieht doch gut aus.. teste ich gleich mal. Habe ich die Methode übersehen? *check doku*
Viele Grüße
Mario
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