Jan_Wehe
I'm new here

Datenbankinhalt verkürzt ausgeben

Jump to solution

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>

0 Kudos
1 Solution

Accepted Solutions
thmarx
I'm new here

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:

  1. Durch die Beschneidung kann evtl. die HTML-Struktur des Newseintrages zerstört werden, was zu unerwünschten Effekten in der Seite führe kann.
  2. Es muss geprüft werden, ob der Text mindestens die ensprechende Länge (hier 99 Zeichen) hat

Viele Grüße

Thorsten Marx

View solution in original post

0 Kudos
4 Replies
pschulz
I'm new here

Moin,

versuch's mal mit $CMS_VALUE(#row.newstext.substring(0,100))$.

Gruß

Peter

0 Kudos
thmarx
I'm new here

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:

  1. Durch die Beschneidung kann evtl. die HTML-Struktur des Newseintrages zerstört werden, was zu unerwünschten Effekten in der Seite führe kann.
  2. Es muss geprüft werden, ob der Text mindestens die ensprechende Länge (hier 99 Zeichen) hat

Viele Grüße

Thorsten Marx

0 Kudos

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?

0 Kudos

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>

Peter
0 Kudos