Search the FirstSpirit Knowledge Base
Hallo zusammen,
eine Frage zur Umwandlung von Datentypen bzw. der Verwendung von Strings:
In einer Absatzvorlagen habe ich mehrere CMS_INPUT_TEXT - Elemente die Bezeichnungen dieser Elemente unterscheiden sich nur an der Endung und beginnen alle mit st_text_ . Im html-Reiter möchte ich diese Elemente nun auslesen. Normalerweise geht das ja ohne Probleme mit CMS_VALUE(st_text_XY). Am liebsten würde ich aber diese Variable "st_text_XY" dynamisch erzeugen. Das heißt ich nehme immer nur den Anfang "st_text_" und hänge dann je nachdem die Endung dran.
Das würde dann im speziellen so aussehen:
Als erstes speichere ich die Endung, die ich in diesem Fall anhängen möchte: CMS_SET(end, "de").
Und dann setzte ich diese Endung ein: CMS_VALUE("st_text_"+end)
Aber das funktioniert nicht, weil das CMS_VALUE dieses Konstrukt als String erkennt und auch als String wieder ausgibt.
Gibt es eine Möglichkeit diesesn String wieder in ein Objekt (oder wie man das nennt) umzuwandeln? Oder aber wenn man den String behalten muss, dass man diesen auch nutzen kann. Z.B. so: .getData().get("st_text_"+end).editor.get(#global.language)?
Hat jemand mit so einer Konstellation schon mal gearbeitet und könnte mir ein paar Tips geben?
Gruß
charlotte
Mh, dann ist mir ihre Anforderung noch nicht ganz klar.
Wenn ich die Methode im verlinkten Beitrag auf ihren Fall anwende, würde ich es so machen:
$CMS_SET(end, "de")$
$CMS_SET(snippetToUse)$
st_text_$CMS_VALUE(end)$$CMS_END_SET$
$CMS_VALUE(#global.getContext().getVariableValue(snippetToUse.toString()))$
In der letzten Zeile würde dann der Wert der Eingabekomponente st_text_de ausgegeben.
Variable variables sollte ihnen weiterhelfen.
Nein, denn hier werden erstmal die Elemente ganz normal mit st_color, .. ausgelesen, verarbeitet und dann mit "$CMS_VALUE(#global.getContext().getVariableValue(snippetToUse.toString()))$ "
als String wieder genutzt um die Variable red_headline auszulesen.
Ich möchte ja mit einem String nicht eine Variable auslesen, sondern das Element direkt. Oder aber der String wird umgewandelt.
gruß
charlotte
Mh, dann ist mir ihre Anforderung noch nicht ganz klar.
Wenn ich die Methode im verlinkten Beitrag auf ihren Fall anwende, würde ich es so machen:
$CMS_SET(end, "de")$
$CMS_SET(snippetToUse)$
st_text_$CMS_VALUE(end)$$CMS_END_SET$
$CMS_VALUE(#global.getContext().getVariableValue(snippetToUse.toString()))$
In der letzten Zeile würde dann der Wert der Eingabekomponente st_text_de ausgegeben.
Ah, nein ich hatte es falsch verstanden. Ich dachte #global.context gilt nur für Variablen die mit CMS_SET definiert wurden und nicht für Bezeichner von Elementen. Aber ich habe es nochmal gründlich getestet (nich so schnell, schnell wie gerade) und es funktioniert!! DANKE!
Etwas kürzer mache ich es nun:
$CMS_SET(end, "de")$
CMS_SET(snippetToUse, "st_text"+end)
$CMS_VALUE(#global.getContext().getVariableValue(snippetToUse.toString()))$
gruß
charlotte
Wobei das "toString()" auch noch überflüssig ist - nu um es noch weiter zu kürzen