CMS:RELATION
Wichtig: CMS:RELATION ist nur für Templates des Backends gedacht (Listen-, Trigger-Templates). Es prüft keine Zugriffsrechte: Es liefert die verknüpften Datensätze unabhängig von Instanz- und Bereichsrechten. Wie bei
CMS:SELECTzählen aber nur veröffentlichte Ziele (freigegeben, Veröffentlichungsdatum erreicht, Ablaufdatum nicht erreicht) – auch im Backend und in der Vorschau;future,archiveundstatelockern das. Datensätze im Papierkorb und Arbeitskopien erscheinen nie.
Gibt das Hauptfeld (Titel) aller Datensätze aus, die über ein Verknüpfungsfeld mit dem
aktuellen Datensatz verbunden sind – in der bevorzugten Sprachversion des Backends
(je Instanz; führt eine Instanz sie nicht, deren Hauptsprache). Datensätze mit leerem
Hauptfeld erscheinen nicht.
Für Frontend-Templates nutzen Sie (CMS:SELECT relation=…)
(CMS:RELATION field [parameter=wert …])
Methode: Cms::cmsRelation()
Ohne Schlüssel: der erste Wert ohne = gilt als field
Parameter
| Parameter | Wert | Standard | Pflicht | Beschreibung |
|---|---|---|---|---|
id |
Datensatz-Id oder Slug |
(aktueller Datensatz) |
Datensatz, dessen Verweise ausgegeben werden. Reine Ziffernfolge = record_id, alles andere = Slug - dieselbe Regel wie in der URL. | |
field ¹ |
Feld |
– | Name des Verweisfeldes (Feldtyp relation, pointer oder link), dessen Ziele ausgegeben werden. Ein anderer Feldtyp ergibt eine Fehlermeldung. | |
limit |
Zahl >0 |
1000 |
Maximale Anzahl der einbezogenen Datensätze in der Ergebnismenge. | |
future |
true / false |
false |
true: Auch vordatierte Ziele (online_at noch nicht erreicht) werden ausgegeben (wie bei CMS:SELECT). | |
archive |
true / false |
false |
true: Auch abgelaufene Ziele (offline_at erreicht) werden ausgegeben (wie bei CMS:SELECT). | |
state |
Status-Id oder any |
0 |
Ohne Angabe nur freigegebene Ziele (status_id 0). Eine Status-Id > 0 nur Ziele mit diesem Status, "any" Ziele jeden Status (wie bei CMS:SELECT). | |
lang |
Sprachkürzel |
(aktuelle Sprache) |
Kürzel der Sprachversion, deren Inhalte angefordert werden (wirkt sich auf mehrsprachige Felder aus). Noch nicht umgesetzt - derzeit gilt immer die Sprache des Aufrufs. | |
separator |
Trennzeichen |
\| |
Text, der zwischen den Ergebnissen stehen soll. | |
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. | |
ifempty |
Text |
– | Text, der zur Quelle wird, wenn die ursprüngliche Quelle leer ist (weitere Parameter, außer 'set', werden ignoriert). | |
instead |
Text |
– | Überschreibt die Ausgabe, falls diese nicht leer ist. | |
set |
Array-Index von $set |
– | Die Ausgabe der Quelle wird umgeleitet und in $set eingetragen. |
¹ kann ohne Schlüssel als erster Wert angegeben werden.
Anwendung
Gibt das Hauptfeld (Titel) aller Datensätze aus, auf die ein Verweisfeld des laufenden Datensatzes zeigt - in der im Backend festgelegten Reihenfolge:
Themen: (CMS:RELATION topics separator=", ")
Ausgabe: Themen: Reisen, Fotografie, Island
Der Befehl liefert nur die Titel. Sollen die verknüpften Datensätze selbst ausgegeben
werden (mit Bild, Link, Datum …), ist CMS:SELECT relation=topics der richtige Weg:
(CMS:SELECT relation=topics resulttemplate=topic_badge)
Rückwärts-Verknüpfungen (welche Artikel zeigen auf dieses Thema?) gehen über
CMS:SELECT filter[topics]="{$cms['record_id']}".
Parameter im Einzelnen
field
Name des Verweisfeldes; darf ohne Schlüssel stehen:
(CMS:RELATION field=topics)
(CMS:RELATION topics)
id
Die Verweise eines anderen Datensatzes - per record_id oder Slug, wie in der URL. Der
Datensatz muss wie in der URL veröffentlicht sein, sonst bleibt die Ausgabe leer:
(CMS:RELATION topics id=1977)
(CMS:RELATION topics id=island-reise)
limit
(CMS:RELATION topics limit=3 separator=", ")
Es werden höchstens drei Titel ausgegeben - die ersten drei in der Reihenfolge des Verweisfeldes.
future
Auch Ziele, deren Veröffentlichungsdatum noch nicht erreicht ist:
(CMS:RELATION termine future=true separator=", ")
archive
Auch abgelaufene Ziele:
(CMS:RELATION topics archive=true)
state
Alle Ziele unabhängig vom Status – etwa in einem Listen-Template des Backends:
(CMS:RELATION topics state=any future=true archive=true)
lang
Noch nicht umgesetzt - es gilt die Sprache des Aufrufs.
(CMS:RELATION topics lang=en)
separator
(CMS:RELATION topics separator=", ")
(CMS:RELATION topics separator="</li><li>" prefix="<ul><li>" suffix="</li></ul>")
Die zweite Zeile ergibt eine Liste: <ul><li>Reisen</li><li>Fotografie</li></ul>.
prefix
prefix / suffix umschließen den Wert und erscheinen nur, wenn er nicht leer ist -
so entsteht kein leeres Themen::
(CMS:RELATION topics prefix="Themen: " suffix="")
suffix
(CMS:RELATION topics suffix=".")
Siehe prefix.
ifempty
ifempty ersetzt die gesamte Ausgabe, wenn die Quelle leer ist; prefix und
suffix entfallen dann:
(CMS:RELATION topics prefix="<p>" suffix="</p>" ifempty="keine Themen zugeordnet")
instead
instead tauscht den Wert aus, sobald die Quelle nicht leer ist - nützlich, wenn
nur das Vorhandensein zählt:
(CMS:RELATION topics instead="Themen vorhanden" ifempty="-")
set
set gibt nichts aus, sondern legt das Ergebnis unter $set['topics'] für das
umgebende PHP oder einen späteren Befehl ab:
(CMS:RELATION topics set=topics)
<?php if ($set['topics'] !== '') { ?> … <?php echo $set['topics']; ?> … <?php } ?>
Stand: camindo CMS 9.1.3