CMS:TEXT
Gibt einen Text formatiert aus.
(CMS:TEXT field [parameter=wert …])
Methode: Cms::cmsText()
Ohne Schlüssel: der erste Wert ohne = gilt als field
Mindestens einer von: field, useval, id
Parameter
| Parameter | Wert | Standard | Pflicht | Beschreibung |
|---|---|---|---|---|
id |
Datensatz-Id oder Slug |
– | ² | Datensatz, aus dem gelesen wird. Reine Ziffernfolge = record_id, alles andere = Slug - dieselbe Regel wie in der URL. Ohne 'field' wird das Feld "text" gelesen. |
field ¹ |
Feld |
– | ² | Name eines Datensatzfeldes, dessen Inhalt als Quelle genutzt wird. |
useval |
Text |
– | ² | Wert in Textform, der als Quelle genutzt wird. |
ifempty |
Text |
– | Text, der zur Quelle wird, wenn die ursprüngliche Quelle leer ist (weitere Parameter, außer 'set', werden dann ignoriert). | |
instead |
Text |
– | Text, der zur Quelle wird, wenn die ursprüngliche Quelle nicht leer ist. | |
entitydecode |
true / false |
true |
true: Entities im Format &...; werden zurück in Unicode-Zeichen gewandelt. | |
trim |
true / false |
false |
true: Leerzeichen am Textanfang und -ende werden entfernt. | |
striptags |
true / false |
false |
true: HTML- und Script-Tags werden entfernt. | |
if[…] |
Text?Text |
– | Wenn die Quelle dem Text vor dem Fragezeichen entspricht, wird der Text nach dem Fragezeichen zur neuen Quelle. | |
else |
Text |
– | Trifft keine der vorherigen IF-Abfragen zu, wird dieser Wert zur Quelle. | |
replace[…] |
Text?Text |
– | Kommt der Text vor dem Fragezeichen in der Quelle vor, wird er durch den Text nach dem Fragezeichen ersetzt. | |
limit |
Zahl >=0 |
– | Kürzt den Text auf die angegebene Anzahl an Zeichen und hängt "…" an; mit angehängtem s (z. B. 200s) wird am letzten Wortende gekürzt. | |
lbrconvert |
true / false |
true |
true: Zeilenumbrüche werden in HTML-Zeilenumbrüche (<br>-Tags) umgewandelt. | |
specialchars |
true / false |
false |
true: Sonderzeichen werden in ihr HTML-Äquivalent umgewandelt. | |
urlconvert |
true / false |
false |
true: Internet-Adressen werden automatisch in klickbare Links umgewandelt. | |
emailconvert |
true / false / encrypt |
false |
true: E-Mail-Adressen werden verlinkt. encrypt: Die Links werden mittels JavaScript leicht verschlüsselt. | |
emaillimit |
>= 0 |
– | Kürzt automatisch verlinkte E-Mail-Adressen auf x sichtbare Zeichen. | |
emailtext |
Text |
– | Verlinkter Text, der anstelle einer E-Mail-Adresse angezeigt wird (nur bei aktiviertem "emailconvert"). | |
target |
Fenster / Frame |
_self |
Setzt das Link-Target für automatisch erzeugte Links (urlconvert, emailconvert). | |
markdown |
true / false |
false |
true: Der Text ist Markdown und wird in HTML umgewandelt (HTML im Text wird maskiert); die übrigen Umwandlungen entfallen. | |
urlencode |
true / false |
false |
true: Der Text wird nach RFC 3986 kodiert (rawurlencode) – für URL-Bestandteile, auch in Attributen ohne weitere Maskierung. | |
urllimit |
Anzahl Zeichen |
80 |
Maximale Länge des sichtbaren Textes für automatisch erzeugte Links (nur für externe Links geeignet!). | |
ampconvert |
true / false |
true |
true: Ein alleinstehendes & wird automatisch in das HTML-Entity & umgewandelt. | |
prefix |
Text |
– | Text, der der Quelle vorangestellt wird, sofern diese nicht leer ist. | |
suffix |
Text |
– | Text, der an die Quelle angehängt wird, sofern diese nicht leer ist. | |
iso |
true / false |
false |
true: Die Ausgabe wird in den Zeichensatz ISO-8859-1 konvertiert. | |
charset |
Text |
utf-8 |
Zeichensatz, in den die Ausgabe konvertiert werden soll. | |
set |
Array-Index von $set |
– | Der formatierte Wert wird nicht ausgegeben, sondern in der Variable $set gespeichert. |
¹ kann ohne Schlüssel als erster Wert angegeben werden.
² mindestens einer der mit ² markierten Parameter muss angegeben werden.
[…] – der Parameter nimmt Unterschlüssel an, z. B. name[schlüssel]=wert.
Anwendung
Der Standardbefehl für Feldinhalte. Er liest ein Feld des laufenden Datensatzes,
wandelt Zeilenumbrüche in <br>, maskiert alleinstehende & und gibt das Ergebnis aus:
<h1>(CMS:TEXT title)</h1>
<p>(CMS:TEXT text)</p>
Ein Feld nur ausgeben, wenn es gefüllt ist - prefix/suffix erscheinen nur bei
nicht leerem Wert:
(CMS:TEXT teaser prefix="<p class=teaser>" suffix="</p>")
Wert für PHP zwischenspeichern statt ausgeben:
(CMS:TEXT title set=title)
<title><?php echo $set['title']; ?> – Beispiel GmbH</title>
Statuswert in Text übersetzen:
(CMS:TEXT status_id if[0]="online" if[1]="gesperrt" if[2]="unbestätigt" else="unbekannt")
Reihenfolge der Verarbeitung: Quelle → if/else → replace → trim → striptags
→ limit → (markdown bzw. urlencode beenden hier) → entitydecode → specialchars bzw.
ampconvert → urlconvert / emailconvert → lbrconvert → iso/charset →
ifempty / instead / prefix / suffix → Ausgabe oder set.
Parameter im Einzelnen
id
id liest aus einem anderen Datensatz - record_id oder Slug, wie in der URL. Nur bei
CMS:TEXT darf id allein stehen: dann wird das Feld text gelesen. Wie in der URL
muss der Datensatz veröffentlicht sein (freigegeben, Veröffentlichungsdatum
erreicht; ein abgelaufener bleibt lesbar), sonst ist der Wert leer – auch in der
Vorschau des Backends.
(CMS:TEXT title id=1977) Titel des Datensatzes 1977
(CMS:TEXT id=impressum) Feld "text" des Datensatzes mit dem Slug "impressum"
field
field ist der Hauptparameter und darf ohne Schlüssel stehen - beide Zeilen sind gleich:
(CMS:TEXT field=title)
(CMS:TEXT title)
useval
useval nimmt statt eines Feldes einen Wert direkt aus dem Template - meist eine
PHP-Variable oder ein zuvor mit set abgelegter Wert:
(CMS:TEXT useval="{$_GET['q']}" specialchars=true)
(CMS:TEXT useval="{$set['wert']}")
Werte aus dem Request ($_GET, $_POST) immer mit specialchars=true ausgeben – sonst
kann ein präparierter Link beliebiges HTML und Script in die Seite setzen.
Damit lassen sich die Text-Filter (striptags, specialchars, limit …) auch auf
fremde Werte anwenden.
ifempty
ifempty ersetzt die gesamte Ausgabe, wenn die Quelle leer ist; prefix und
suffix entfallen dann:
(CMS:TEXT teaser prefix="<p>" suffix="</p>" ifempty="Kein Teaser vorhanden.")
Achtung: Ist die Quelle leer, werden auch alle Umwandlungen übersprungen - der
ifempty-Text wird unverändert ausgegeben.
instead
instead tauscht den Wert aus, sobald die Quelle nicht leer ist - nützlich, wenn
nur das Vorhandensein zählt:
(CMS:TEXT image instead="✔ Bild vorhanden" ifempty="-")
entitydecode
Standardmäßig werden Entities (&, ä, –) zurück in Zeichen gewandelt.
Für Inhalte, die die Entities behalten sollen (z. B. für XML-Feeds):
(CMS:TEXT text entitydecode=false)
trim
(CMS:TEXT title trim=true prefix="[" suffix="]")
Ausgabe: [Hallo Welt] statt [ Hallo Welt ]
striptags
HTML- und Script-Tags entfernen, etwa für Teaser aus einem HTML-Feld oder für
Meta-Tags. Jedes Tag wird durch ein Leerzeichen ersetzt (aus <p>a</p><p>b</p> wird
a b), der Text zwischen den Tags bleibt stehen:
<meta name="description" content="(CMS:TEXT text striptags=true limit=160 lbrconvert=false)">
if
Wertetabelle: Trifft der Wert einen Schlüssel, wird der Eintrag zur neuen Quelle. Zwei Schreibweisen - Unterschlüssel oder Kurzform mit Fragezeichen:
(CMS:TEXT status_id if[0]="online" if[1]="gesperrt")
(CMS:TEXT status_id if="0?online" if[]="1?gesperrt")
Nicht getroffene Werte bleiben unverändert - außer else ist angegeben.
Enthält der Ersatztext eines Ziffern-Schlüssels selbst ein Fragezeichen, nehmen Sie
die Kurzform: if[]="1?Wirklich?". Bei if[1]="Wirklich?" wäre nicht zu erkennen, ob
1 der Suchwert ist oder die Kurzform Wirklich → `gemeint war (in PHP sind beide Schreibweisen der Schlüssel1). Für Text-Schlüssel (if[aktiv]="Ja?"`) gilt das nicht.
else
(CMS:TEXT status_id if[0]="online" else="nicht online")
Ausgabe bei status_id = 2: nicht online
replace
Teiltexte in der Quelle ersetzen - Kurzform mit ? oder ein Eintrag je Suchtext:
(CMS:TEXT text replace="\n?<br><br>" lbrconvert=false)
(CMS:TEXT title replace[GmbH]="Gesellschaft mbH" replace[&]="und")
Wie bei if gilt: Ersatztexte mit Fragezeichen für einen Ziffern-Suchtext in der
Kurzform schreiben (replace[]="0?null?").
limit
Text auf eine Zeichenzahl kürzen; ein angehängtes s kürzt am letzten Wortende
(„soft“). Angehängt wird das Snippet ellipsis (…):
<p>(CMS:TEXT text striptags=true limit=200s)</p>
<td>(CMS:TEXT title limit=30)</td>
lbrconvert
Standardmäßig werden Zeilenumbrüche zu <br>. Für Inhalte in <pre>, in Attributen
oder in JavaScript abschalten:
<pre>(CMS:TEXT code lbrconvert=false)</pre>
specialchars
Alle Sonderzeichen maskieren (< → <, " → " …) - für Attribute und
für Inhalte, die kein HTML enthalten dürfen:
<input value="(CMS:TEXT title specialchars=true lbrconvert=false)">
urlconvert
Adressen (http://…, https://…, www.…) im Text klickbar machen:
(CMS:TEXT text urlconvert=true target=_blank urllimit=24)
Ausgabe: <a href="https://example.com/sehr/lange/adresse" target="_blank">https://example.com/sehr…</a>
emailconvert
E-Mail-Adressen verlinken; encrypt setzt den Link per JavaScript zusammen, sodass
die Adresse nicht im Quelltext steht. Das <script> dafür trägt die Nonce der Seite und
läuft deshalb auch unter einer durchgesetzten Script-Policy (CMS:CSP):
(CMS:TEXT contact emailconvert=true)
(CMS:TEXT contact emailconvert=encrypt emailtext="E-Mail schreiben")
emaillimit
Sichtbaren Teil einer verlinkten Adresse kürzen:
(CMS:TEXT contact emailconvert=true emaillimit=12)
Ausgabe: <a href="mailto:redaktion@example.com">redaktion@ex…</a>
emailtext
Fester Linktext statt der Adresse (nur mit emailconvert):
(CMS:TEXT contact emailconvert=true emailtext="Kontakt aufnehmen")
target
Link-Target für die von urlconvert erzeugten Links:
(CMS:TEXT text urlconvert=true target=_blank)
markdown
Gibt ein Feld aus, das Markdown enthält – etwa eines mit der Extension Markdown (visuell) – und wandelt es in HTML um:
<div class="text">(CMS:TEXT text markdown=true)</div>
Umgewandelt wird mit Parsedown; HTML im Text wird maskiert, Links auf javascript: und
ähnliche Ziele werden entschärft. Zusätzlich zum üblichen Markdown versteht der
Parameter die Formate der Extension Markdown (visuell):
| Markdown | Ergebnis |
|---|---|
++Text++ |
unterstrichen (<u>) |
::: center … ::: |
die eingeschlossenen Absätze zentriert (left, center, right; als <div style="text-align: …">) |
<br> |
Zeilenumbruch, auch in Tabellenzellen |
­, … |
bleiben Sonderzeichen |
markdown beendet die Verarbeitung: entitydecode, specialchars, lbrconvert,
urlconvert usw. entfallen. prefix, suffix, ifempty und set wirken wie
gewohnt.
urlencode
Den Wert als URL-Bestandteil kodieren. Alle weiteren Umwandlungen entfallen dann:
<a href="/suche?q=(CMS:TEXT title urlencode=true)">ähnliche Artikel</a>
Ausgabe: /suche?q=Hallo%20Welt
urllimit
Sichtbare Länge automatisch verlinkter Adressen (Standard 80 Zeichen, 0 = ungekürzt):
(CMS:TEXT text urlconvert=true urllimit=30)
ampconvert
Standardmäßig wird ein alleinstehendes & zu &, vorhandene Entities bleiben.
Abschalten, wenn der Inhalt bereits vollständig maskiert ist:
(CMS:TEXT html_snippet ampconvert=false)
prefix
prefix / suffix umschließen den Wert und erscheinen nur, wenn er nicht leer ist -
so entsteht kein leeres <p class=teaser></p>:
(CMS:TEXT teaser prefix="<p class=teaser>" suffix="</p>")
suffix
(CMS:TEXT author_name suffix=" (Autor)")
Siehe prefix.
iso
Ausgabe nach ISO-8859-1 umkodieren (Kurzform für charset=ISO-8859-1), etwa für
alte Schnittstellen:
(CMS:TEXT title iso=true)
charset
(CMS:TEXT title charset=windows-1252)
set
set gibt nichts aus, sondern legt das Ergebnis unter $set['title'] für das
umgebende PHP oder einen späteren Befehl ab:
(CMS:TEXT title set=title)
<?php if ($set['title'] !== '') { ?> … <?php echo $set['title']; ?> … <?php } ?>
Stand: camindo CMS 9.1.3