Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich hole meine News aus einer Datenbanktabelle und möchte auf der Startseite nur die ersten 100 Zeichen eines Newseintrages ausgeben.
Ich habe mehrere Varianten versucht, leider ohne Erfolg.
<p>$CMS_VALUE(#row.newstext[0..99])$</p>
<p>$CMS_VALUE(#row.newstext)$[0..99]</p>
<p>$CMS_VALUE(#row.getValue("newstext_" + #global.language.abbreviation)[0..99])$</p>
Hallo Herr Wehe,
das Ganze ist abhängig von der verwendeten Eingabekomponente.
Verwenden sie eine CMS_INPUT_TEXT Komponente, dann können sie es wie folgt machen:
$CMS_VALUE(#row.newstext.substring(0, 99))$
Verwenden sie die CMS_INPUT_DOM Komponente, dann können sie es auf diese Art mache:
$CMS_VALUE(#row.newstext.toText(false).substring(0, 99))$
toText(false) bedeutet, dass der Inhalt als Plaintext ausgegeben wird. In der Online Dokumentation unter dem Punkt API Dokumentation (Access-API -> DomElement) finde sie weitere Informationen.
Zwei Dinge gilt es hier noch zu beachten:
Viele Grüße
Thorsten Marx
Moin,
versuch's mal mit $CMS_VALUE(#row.newstext.substring(0,100))$.
Gruß
Peter
Hallo Herr Wehe,
das Ganze ist abhängig von der verwendeten Eingabekomponente.
Verwenden sie eine CMS_INPUT_TEXT Komponente, dann können sie es wie folgt machen:
$CMS_VALUE(#row.newstext.substring(0, 99))$
Verwenden sie die CMS_INPUT_DOM Komponente, dann können sie es auf diese Art mache:
$CMS_VALUE(#row.newstext.toText(false).substring(0, 99))$
toText(false) bedeutet, dass der Inhalt als Plaintext ausgegeben wird. In der Online Dokumentation unter dem Punkt API Dokumentation (Access-API -> DomElement) finde sie weitere Informationen.
Zwei Dinge gilt es hier noch zu beachten:
Viele Grüße
Thorsten Marx
Vielen Dank für die Hilfe! Ich nutze eine CMS_INPUT_DOM Komponente, zerstückeltes HTML umgehe ich, indem ich den verkürzten Text als Plaintext ausgebe:
<p>
$CMS_IF(#row.newstext.toText(false).length < 100)$
$CMS_VALUE(#row.newstext.toText(false))$
$CMS_ELSE$
$CMS_VALUE(#row.newstext.toText(false).substring(0, 99))$...
$CMS_END_IF$
<a href="$CMS_REF(pageref:"news_details", contentId:#row.getId())$" title"more"><img src="$CMS_REF(media:"more")$" alt="more" /></a></p>
Offtopic: Wie kann ich denn Code als Code markieren? <code></code> und [code][/code] haben nicht funktioniert. GIbt es eine Übersicht mit Forum-Tags?
Offtopic: Wie kann ich denn Code als Code markieren? <code></code> und [code][/code] haben nicht funktioniert. GIbt es eine Übersicht mit Forum-Tags?
Erweiterten Editor verwenden, dann "Einfügen / Syntax-Hervorhebung / ...".
Eine Anmerkung zum Code selber: Die Methode "toText(..)" wird drei mal aufgerufen, aus Performance-Gründen würde ich vorschlagen, dafür eine Variable einzuführen:
<p>
$CMS_SET(newstext, #row.newstext.toText(false))$
$CMS_IF(newstext.length < 100)$
$CMS_VALUE(newstext)$
$CMS_ELSE$
$CMS_VALUE(newstext.substring(0, 99))$...
$CMS_END_IF$
<a href="$CMS_REF(pageref:"news_details", contentId:#row.getId())$" title"more"><img src="$CMS_REF(media:"more")$" alt="more" /></a></p>
Wobei sogar das nicht nötig ist, da Index-Fehler bei "substring" 'gracefully' behandelt werden, damit schrumpt das ganze dann zu:
<p>
$CMS_VALUE(#row.newstext.toText(false).substring(0, 99))$
<a href="$CMS_REF(pageref:"news_details", contentId:#row.getId())$" title"more"><img src="$CMS_REF(media:"more")$" alt="more" /></a></p>