bianca_batsch
New Responder

Leere Datenquelle auswerten

Jump to solution

Hallo,

ich habe eine leere Datenquelle (ohne Einträge) und würde dies gerne auswerten können.

#cs.isEmpty bringt keinerlei Ausgabe, wenn kein Datensatz in der DQ vorhanden ist. Eine Null-Prüfung oder Ausgabe des Wertes von #cs helfen nichts. Die Ausgabe ist mehr als leer.

Gleiches gilt auch für eine Query

<CMS_HEADER>

<CMS_FUNCTION name="contentSelect" resultname="fr_list">

<CMS_PARAM name="schema" value="SCHEMA" />

<QUERY entityType="empty_dq"/>

</CMS_FUNCTION>

</CMS_HEADER>

Hier gibt $CMS_VALUE(fr_list)$ nichts aus. Keine Fehler in der Vorschau, keine Vergleiche möglich.

Übersehe ich was?

LG Bianca

PS: FS Version 5.2.200312.78911

1 Solution

Accepted Solutions

Hallo Bianca,

wie Stefan schon schreibt, muss die Ausgabe von $CMS_VALUE(fr_list.size)$ 0 ergeben (oder eine andere Zahl).

Mich macht die Ausgabe "Das ganze ist eine technische Seite, die ein JSON rendert" etwas misstrauisch. Wie wird denn das JSON erzeugt? Über die json() Funktion, per Templatemittel oder auf eine andere Art?
Wenn es per Templatemitteln erzeugt wird, dann wird das Problem wahrscheinlich sein, dass auf der Seitenvorlage nur die Absätze ausgegeben werden - und diese nicht erzeugt werden, da es ja keinen Datensatz gibt. Somit wird ein leeres Dokument erzeugt, was wiederum dazu führt, dass FirstSpirit gar nicht erzeugt.

Lösung wäre dann beispielsweise auf dem Seitentemplate abzufragen, ob $CMS_VALUE(#global.pageParams.data.size)$ == 0 ist und wenn ja, entsprechende Ausgaben zu erzeugen, anstatt die [nicht vorhandenen] Absätze auszugeben.

Viele Grüße

Holger

View solution in original post

0 Kudos
6 Replies
hoebbel
Crownpeak employee

Hallo Bianca,

bei der ContentSelect Funktion würde ich erwarten, dass $CMS_VALUE(fr_list.size)$ 0 ergibt und Du drauf prüfen kannst.

Bei #cs (also der Ausgabe über eine Tabellenvorlage) ist das schon etwas komplizierter, da für jeden Datensatz die Tabellenvorlage einmal ausgegeben wird. Sind keine Datensätze vorhanden, wird die Tabellenvorlage nicht aufgerufen, der dort hinterlegte Templatecode also niemals durchlaufen.

Leider hast Du nicht geschrieben, was Du mit der Abfrage #cs.isEmpty erreichen willst. Wenn es darum geht, eine Standard-Ausgabe zu erzeugen für "leider keine Datensätze vorhanden", so ist dafür auf der Seitenreferenz auf der Karteikarte Daten die Option "Seite für leeres Abfrageergebnis" gedacht. Dort kann eine beliebige Seite aus der Inhalte-Verwaltung referenziert werden, die immer angezeigt wird, wenn die entsprechende Abfrage zu einer leeren Menge an Datensätzen führt.

Viele Grüße

Holger

0 Kudos

Hallo Holger,

das dachte ich auch @$CMS_VALUE(fr_list.size)$ 0, aber das passiert halt nicht.

Am Ende ist es eine ContentProjektion über die gedamte Tabelle, die die Einträge auf einer Seite ausgeben soll. Ich will erreichen, dass die Seite auch gerendert wird, ob in der DQ etwas drin steht oder nicht. Momentan wird die gesamte Seite nicht erzeugt, weil die Tabelle leer ist. Das ganze ist eine technische Seite, die ein JSON rendert. Mir würde ja am Ende eine Datei mit dem Inhalt "[]" reichen, damit überhaupt was gerendert wird und ich keinen 404 bekomme.

LG Bianca

0 Kudos

Hallo Bianca,

hast du mal nachgeschaut, ob in den Logausgaben ein Error zu finden ist?

Wäre für mich der einzige Grund, warum ein Aufruf von size keinen Wert liefert.

Ansonsten gerne auch mal fr_list.class ausgeben lassen, um den Typ überprüfen zu können.

Beste Grüße

Stefan

0 Kudos

Hallo Holger Stefan, (sorry!!!, hatte mich verlesen :smileyshocked:)

keine Fehler in Logs oder sonst wo. Das Ding scheint nicht zu existieren / aufgerufen zu werden, wenn nichts in der DB steht. Der Aufruf .class bringt da auch nichts - hab ich schon versucht.

Wie gesagt, DQ leer = Inhalte leer / nicht vorhanden (Prinzip keine Hände - keine Kekse Smiley Sad). Ich denke, es kommt nichtmal dazu, dass das Template aufgerufen wird. Demzufolge habe ich keine Liste und keine Größe der Liste.

LG Bianca

0 Kudos

Hallo Bianca,

wie Stefan schon schreibt, muss die Ausgabe von $CMS_VALUE(fr_list.size)$ 0 ergeben (oder eine andere Zahl).

Mich macht die Ausgabe "Das ganze ist eine technische Seite, die ein JSON rendert" etwas misstrauisch. Wie wird denn das JSON erzeugt? Über die json() Funktion, per Templatemittel oder auf eine andere Art?
Wenn es per Templatemitteln erzeugt wird, dann wird das Problem wahrscheinlich sein, dass auf der Seitenvorlage nur die Absätze ausgegeben werden - und diese nicht erzeugt werden, da es ja keinen Datensatz gibt. Somit wird ein leeres Dokument erzeugt, was wiederum dazu führt, dass FirstSpirit gar nicht erzeugt.

Lösung wäre dann beispielsweise auf dem Seitentemplate abzufragen, ob $CMS_VALUE(#global.pageParams.data.size)$ == 0 ist und wenn ja, entsprechende Ausgaben zu erzeugen, anstatt die [nicht vorhandenen] Absätze auszugeben.

Viele Grüße

Holger

0 Kudos

Hi Holger,

ich habe es mit $CMS_VALUE(#global.pageParams.data.size == 0)$ im Seitentemplate umgesetzt. Ich finde es nicht wirkich gut, aber es tut, was es soll.

Vielen Dank für eure Hilfe!

LG Bianca