contentSelect
Mithilfe der Funktion contentSelect können Datensätze aus der Datenquellen-Verwaltung ausgegeben und zur weiteren Verarbeitung genutzt werden.
Die Funktion bietet die Möglichkeit, Datensätze zu filtern und/oder zu sortieren.
Das Ergebnis (Rückgabewert) der Funktion ist eine Liste, die alle Datensätze enthält, auf die die Filterkriterien zutreffen. Diese kann z. B. über die Anweisung $CMS_FOR(...)$ ausgegeben werden (siehe Abschnitt Ausgabe).
Syntax
Der Grundaufbau der Funktion contentSelect sieht wie folgt aus:
<CMS_FUNCTION name="contentSelect" resultname="BEZEICHNER">
<CMS_PARAM name="schema" value="BEZEICHNER" />
<CMS_VALUE_PARAM name="BEZEICHNER" value="WERT" />
...
<QUERY entityType="BEZEICHNER">
<FILTERPARAM parameter="BEZEICHNER" datatype="DATENTYP" value="VORBELEGUNG" />
<FETCHMODE attribute="ATTRIBUT" lazy="NUMERISCHER_BOOLESCHER_WERT" />
<ORDERCRITERIA attribute="ATTRIBUT" descending="NUMERISCHER_BOOLESCHER_WERT" />
...
<EQ attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<NEQ attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<GT attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<GTE attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<LT attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<LTE attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<IS_NULL attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<NOTNULL attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<LIKE attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<AND>
<EQ attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
...
<LIKE attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<OR>
...
</OR>
...
</AND>
<OR>
<EQ attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
...
<LIKE attribute="ATTRIBUT" parameter="BEZEICHNER" datatype="DATENTYP" value="WERT" />
<AND>
...
</AND>
...
</OR>
...
</QUERY>
</CMS_FUNCTION>
Zu allgemeinen Hinweisen zur Syntax von Header-Funktionen siehe einleitende Seite Funktionen. |
Parameter
Die Funktion contentSelect lässt sich in einen Definitions- und einen Abfrageteil unterteilen:
Die Angabe von schema oder queryUid ist Pflicht.
schema
Mit dem Parameter schema wird das Datenbank-Schema angegeben, welches für die Abfrage genutzt werden soll.
Als Wert des Parameters wird der Referenzname des Datenbank-Schemas angegeben:
<CMS_FUNCTION name="contentSelect" resultname="name">
<CMS_PARAM name="schema" value="KONSTANTE" />
...
</CMS_FUNCTION>
queryUid
Alternativ zum Datenbank-Schema, das über den Parameter schema angegeben wird, kann auch direkt eine Abfrage angegeben werden.
Als Wert des Parameters wird der Referenzname der Abfrage erwartet.
Syntax:
<CMS_FUNCTION name="contentSelect" resultname="name">
<CMS_PARAM name="queryUid" value="KONSTANTE" />
</CMS_FUNCTION>
Beispiel:
<CMS_FUNCTION name="contentSelect" resultname="myContentSelectFunction">
<CMS_PARAM name="queryUid" value="mySchema.myQuery"/>
</CMS_FUNCTION>
Hinweis: Wird für den Definitionsteil queryUid verwendet, ist keine Definition eines Abfrageteils per <QUERY> erforderlich.
Wird queryUid mit
- einem <QUERY>Tag oder
- <CMS_PARAM name="schema".../>
zusammen definiert, kommt es zu einem speicherverhindernden Syntaxfehler.
Hinweis: Nur, wenn die Abfrage als Konstante definiert wird, wird über die contentSelect-Funktion eine ausgehende Referenz von der Vorlage auf die Abfrage erzeugt.
beliebige Parameter
Mit der Definition eines frei wählbaren Bezeichners können beliebig viele Ausdrücke der Abfrage als Parameter zur Verfügung gestellt werden.
Für den Bezeichner dürfen folgende Zeichen verwendet werden:
A bis Z, a bis z, 0 bis 9 und _.
Definition unter Angabe von Ausdrücken:
<CMS_FUNCTION name="contentSelect" resultname="name">
<CMS_VALUE_PARAM name="BEZEICHNER" value="AUSDRUCK" />
...
</CMS_FUNCTION>
Beispiel für die Definition der Parameter von und bis:
<CMS_FUNCTION name="contentSelect" resultname="name">
<CMS_VALUE_PARAM name="von" value="st_startDate" />
<CMS_VALUE_PARAM name="bis" value="#global.now" />
...
</CMS_FUNCTION>
Anmerkung: Bei st_startDate handelt es sich um eine Datums-Eingabekomponente (CMS_INPUT_DATE). Bei #global.now um den Startpunkt der Veröffentlichung.
Siehe dazu auch Seite Datenbank-Abfragen.
Abfrageteil (nur für 'schema')
Die Definition des Abfrageteils ist nur in Verbindung mit schema erforderlich, nicht wenn queryUid verwendet wird.
Der Abfrageteil mit einem QUERY-Tag begonnen. Das QUERY-Tag ist gleichzeitig das Wurzelelement der Abfrage.
Alle Tags, die zwischen dem öffnenden und schließenden QUERY-Tag angegeben werden, werden bei der Abfrage berücksichtigt.
Mit dem Parameter entityType wird der symbolische Tabellenname im Datenbank-Schema angegeben, damit die Abfrage auf die Datensätze der zugehörigen Datenbank-Tabelle angewendet werden kann.
Mit dem Parameter limit kann das Ergebnis der Abfrage auf eine bestimmte Anzahl an Datensätzen beschränkt werden.
Beispiel:
<CMS_FUNCTION name="contentSelect" resultname="name">
<CMS_PARAM name="schema" value="KONSTANTE" />
<QUERY entityType="BEZEICHNER" limit="10">
<.../>
</QUERY>
</CMS_FUNCTION>
QUERY-Tags
Die Tags, die innerhalb des QUERY-Tags verwendet werden können, können auf der Seite Datenbank-Abfragen nachgeschlagen werden:
- AND (Und-Verknüpfung von Abfragen)
- EQ (Gleichheitsprüfung)
- FETCHMODE (Ladeverhalten)
- FILTERPARAM (Definition von Vergleichswerten)
- GT (Größer-Prüfung)
- GTE (Größergleich-Prüfung)
- IS_NULL (Null-Prüfung)
- LIKE (Ähnlichkeitsprüfung).
- LT (Kleiner-Prüfung)
- LTE (Kleinergleich-Prüfung)
- NEQ (Ungleichheitsprüfung)
- NOTNULL
- OR (Oder-Verknüpfung von Abfragen)
- ORDERCRITERIA
Tipp: Abfragen bieten auf dem Register Bedingungen einen Assistenten, über den Abfragen einfach über eine grafische Oberfläche erstellt werden können. Der resultierende Quellcode kann dann als Grundlage für den <QUERY/>-Teil der contentSelect-Funktion verwendet werden.
Ausgabe
Das Ergebnis einer contentSelect-Funktion kann folgendermaßen ausgegeben werden:
$CMS_IF(!BEZEICHNER.isEmpty)$
$CMS_FOR(VARIABLE, BEZEICHNER)$
$CMS_VALUE(VARIABLE.id)$: $CMS_VALUE(VARIABLE.SPALTENNAME)$
$CMS_END_FOR$
$CMS_END_IF$
Dabei ist
- BEZEICHNER der Bezeichner, der über den Parameter resultname definiert wird,
- VARIABLE ein Variablenname und
- SPALTENNAME der Name einer Tabellenspalte.