Search the FirstSpirit Knowledge Base
Hallo zusammen,
Die Eingabekomponente CMS_INPUT_DOM liefert die Möglichkeit, jeden eingegebenen Absatz mittels Formatvorlagen zu formatieren. Die Formatvorlage kann dabei aus allen Formatvorlagen gewählt werden, die für den CMS_INPUT_DOM freigeschaltet sind. Soweit so gut.
Nun bin ich auf der Suche nach einer Möglichkeit, in der Formatvorlage zu erkennen, ob es sich um den letzten eigegebenen Absatz handelt. Einen einfachen Weg (wie bspw. bei CMS_FOR mit #for.isLast) habe ich leider nicht gefunden.
Ganz konkret geht es darum, dass alle Absätze aus dem CMS_INPUT_DOM in <p>-Tags geschrieben werden sollen. Im letzten Absatz möchte ich jedoch noch eine Zusatzinfo am Ende des Absatzes (innerhalb des <p>-Tags) unterbringen. Einen Workaround habe ich zwar, finde meinen Weg jedoch nicht so sauber. Lieber wäre es mir, wenn ich in der Ausgabe der Formatvorlage sowas schreiben könnte:
<p>$CMS_VALUE(#content)$$CMS_IF(#content.istDerLetzteAbsatz)$<a href="mehr"></a<$CMS_END_IF$</p>
Viele Grüße
Rolf
Hallo Rolf,
wenn sichergestellt ist, dass der letzte Absatz innerhalb der Eingabekomponente CMS_INPUT_DOM mit einem </p> endet, dann würde ich es so machen:
$CMS_SET(set_test)$$CMS_VALUE(st_text)$$CMS_END_SET$
$CMS_VALUE(set_test.toString().substring(0,test.toString().lastIndexOf("</p>")))$<Hier der Quelltext für den Link></p>
Annahme: Die Eingabekomponente hat den name st_text.
Der Quelltext gehört an die Stelle, an der die Eingabekomponente ausgegeben wird, NICHT in das Formattemplate!
Viele Grüsse aus Dortmund,
Holger
Oder schneller, wenn nur ein einzelnes Absatz-Formattemplate zulässig ist:
Diesmal den Quelltext innerhalb des Formattemplates:
$CMS_VALUE(set_endTag+set_startTag+#content)$$CMS_SET(set_endTag,"</p>")$
Jetzt nur noch vor der Ausgabe des DOMs folgendes definieren:
$CMS_SET(set_endTag,"")$$CMS_SET(set_startTag,"<p>")$
Nach der Ausgabe des DOMs kann dann einfach der a Tag ausgegeben werden und danach der letzte <p> Tag geschlossen werden.
Zusammen also so:
Formatvorlage:
$CMS_VALUE(set_endTag+set_startTag+#content)$$CMS_SET(set_endTag,"</p>")$
Absatzvorlage (Annahme: name der Eingabekomponente ist st_text):
$CMS_SET(set_endTag,"")$$CMS_SET(set_startTag,"<p>")$$CMS_VALUE(st_text)$
<Hier der Quelltext für den Link></p>
Hallo Holger,
Danke für die Antwort, genau das ist derzeit auch der Workaround, den ich verwende. Derzeit funktioniert das auch, da wie du geschrieben hast der letzte Absatz immer mit einem </p>-Tag endet. Die Frage für mich ist jedoch, ob das in Zukunft auch so bleiben wird oder ob neue Formatvorlagen hinzukommen, die eben nicht mit einem </p>-Tag enden.
Ich werde auf jeden Fall erst einemal bei diesem Workaround bleiben. Eine Lösung über ein Systemobjekt (welches mir angibt, ob es sich um den letzten Absatz der Eingabekomponente handelt) wäre jedoch deutlich schöner und sauberer.
Viele Grüße
Rolf