Search the FirstSpirit Knowledge Base
Hallo Zusammen,
Ich habe mir schon alle Infos zu CMS_SET angesehen und leider nichts für mein Problem gefunden. Ich möchte gerne eine CMS_SET Anweisung, die ich immer wieder in versch. Vorlagen brauche, einmal zentral anlegen und so leicht pflegbar halten.
Konkret geht es um die Zeichenersetzung für alt und title Attribute in img Tags. Ich möchte hier nicht die convert Methode benutzen.
Code Beispiel:
$CMS_IF(!st_altText.isEmpty)$
$CMS_SET(myAltText)$
$CMS_VALUE(st_altText)$
$CMS_END_SET$
$CMS_SET(myAltText,myAltText.toString.replaceAll("&","und"))$
$CMS_SET(myAltText,myAltText.toString.replaceAll("<",""))$
$CMS_SET(myAltText,myAltText.toString.replaceAll(">",""))$
$CMS_SET(myAltText,myAltText.toString.replaceAll("\\\"","'"))$
$CMS_END_IF$
$CMS_IF(!st_titleText.isEmpty)$
$CMS_SET(myTitleText)$
$CMS_VALUE(st_titleText)$
$CMS_END_SET$
$CMS_SET(myTitleText,myTitleText.toString.replaceAll("&","und"))$
$CMS_SET(myTitleText,myTitleText.toString.replaceAll("<",""))$
$CMS_SET(myTitleText,myTitleText.toString.replaceAll(">",""))$
$CMS_SET(myTitleText,myTitleText.toString.replaceAll("\\\"","'"))$
$CMS_END_IF$
im img Tag wird dann folgendes ausgegeben: alt="$CMS_IF(!myAltText.isEmpty)$$CMS_VALUE(myAltText.toString.trim())$$CMS_END_IF$"
Entsprechend beim title.
Probiert habe ich schon den Anweisungsblock mit CMS_SET in eine Formatvorlage (set_alt_title) auszulagern und über $CMS_RENDER(template:"set_alt_title")$ in die Vorlagen einzubinden. Leider werden die SET Anweisungen so nicht ausgeführt.
Ich hoffe, ich hab mein Problem verständlich geschildert.
Hat jemand eine Idee für eine mögliche Lösung?
Gruß
Petra Hewera-Harz
Sie können einfach eine neue Konvertierungsregel erstellen, die für den Fall passt und dann mittels .convert("NAME_DER_KONVERTIERUNGSREGEL") diese anwenden.
Die fachliche Anforderung ist die potentielle nicht erlaubte Zeichen für das Attribute alt/title zu ersetzen? Das macht man am besten durch eine Konvertierungsregel. Diese können Sie zentral pflegen und sie ist auch viel einfacher anzuwenden, ohne CMS_SET.
Siehe dazu auch
Hallo,
eigentlich wollte ich nicht über eine Konvertierungregel gehen, weil ich davon ausgegangen bin, dass sich hier das gewollte nicht realisieren lässt. Also die Ersetzung des & mit und, von > und < mit leer-String und des " mit '.
Die Konvertierungregel Unicode to HTML 4 ist im [quote] Teil schon angepasst worden:
[quote]
0x3c="<" für <
0x3e=">" für >
0x26="&" für &
0x24="$" für $
0x25="%" für %
Das beißt sich meines Erachtens mit den gewünschten Ersetzungen für alt/title Attribute.
Für den Vorlagensatz HTML ist im Projekt die Konvertierungsregel Unicode to HTML4 ausgewählt. Ich denke, das sollte auch aufgrund der ansonsten gewünschten Konvertierungen so bleiben. Alle unsere Vorlagen basieren auf diesem Vorlagensatz und verwenden damit diese Konvertierungsregel.
Wie genau soll ich da mit der Option Konvertierungsregel verfahren?
Gruß
Petra Hewera-Harz
Sie können einfach eine neue Konvertierungsregel erstellen, die für den Fall passt und dann mittels .convert("NAME_DER_KONVERTIERUNGSREGEL") diese anwenden.
ok, das scheint zu klappen.
Ich habe eine neue Konvertierungsregel über Server Eigenschaften erstellt in der sich ausschließlich die benötigten Konvertierungen im convert Block befinden:
0x26="und" für &
0x3c="" für <
0x3e="" für >
0x22="'" für "
Diese wende ich dann wie oben ausgeführt über .convert an. Damit ist gewährleistet, dass keine anderen Zeichen konvertiert werden.
Ich wusste halt nicht, dass die Konvertierungsregel, die für einen Vorlagensatz festgelegt wurde, bei der Ausgabe noch gewechselt werden kann.
Super, jetzt kann ich mir die CMS_SET Arie ersparen.
Danke
Petra Hewera-Harz