- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Datenbankinhalt verkürzt ausgeben
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>
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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:
- Durch die Beschneidung kann evtl. die HTML-Struktur des Newseintrages zerstört werden, was zu unerwünschten Effekten in der Seite führe kann.
- Es muss geprüft werden, ob der Text mindestens die ensprechende Länge (hier 99 Zeichen) hat
Viele Grüße
Thorsten Marx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Moin,
versuch's mal mit $CMS_VALUE(#row.newstext.substring(0,100))$.
Gruß
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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:
- Durch die Beschneidung kann evtl. die HTML-Struktur des Newseintrages zerstört werden, was zu unerwünschten Effekten in der Seite führe kann.
- Es muss geprüft werden, ob der Text mindestens die ensprechende Länge (hier 99 Zeichen) hat
Viele Grüße
Thorsten Marx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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>

