t_thalmann
Returning Observer

Abfrage für Detailseite definieren: "News neuer als 1 Jahr"

Hallo,

damit Detailseiten für die Ausgabe von einzelnen News-Datensätzen nicht in alle Ewigkeit stets neu generiert werden, möchte ich die Abfrage für die auszuwählenden Datensätze um ein maximales Alter erweitern.

Die bisherige Abfrage lautet so:

<QUERY entityType="news">
   <FILTERPARAM parameter="id" datatype="java.lang.Integer" value="833"/>
    <AND>
        <EQ attribute="rubrikenList.fs_id" parameter="id"/>
        <LTE attribute="datum" datatype="de.espirit.common.Now" value="1288341564861"/>
        <OR>
            <IS_NULL attribute="datum_archivierung"/>
            <GT attribute="datum_archivierung" datatype="de.espirit.common.Now" value="1288341564861"/>
        </OR>
    </AND>
</QUERY>

Diese Abfrage soll so erweitert werden, dass News, die älter als ein Jahr sind, unabhängig vom (teilweise leeren) Archivierungsdatum, nicht mehr ausgewählt werden, also ungefähr so:

<QUERY entityType="news">
    <FILTERPARAM parameter="id" datatype="java.lang.Integer" value="833"/>
    <FILTERPARAM parameter="Datum" datatype="java.util.Date" value="#global.now-31536000000"/>
    <AND>
        <EQ attribute="rubrikenList.fs_id" parameter="id"/>

        <LTE attribute="datum" datatype="de.espirit.common.Now" value="1288341564861"/>
        <GT attribute="datum" parameter="Datum"/>

        <OR>
            <IS_NULL attribute="datum_archivierung"/>
            <GT attribute="datum_archivierung" datatype="de.espirit.common.Now" value="1288341564861"/>
        </OR>
    </AND>
</QUERY>

Wie zu erwarten war, funktioniert "#global.now-31536000000" nicht. Wie kann ich diese Abfrage definieren?

Wohlgemerkt, es handelt es sich nicht um einen Query in einem ContentSelect, sondern dieser wird beim Datenbankschema definiert, um im Bereich "Daten" der Detailseite verwendet zu werden.

0 Kudos
12 Replies
hoebbel
Crownpeak employee

Hallo Herr Thalmann,

ich fürchte, dass das nur "indirekt" funktionieren wird. Und zwar indem Sie in dem entsprechenden Auftrag ein Skript einhängen, welches in den entsprechenden Queries die untere Grenze auf "vor einem Jahr" setzt.

Aber vielleicht hat ja jemand eine bessere Idee?

Viele Grüße aus Dortmund,

  Holger Höbbel

0 Kudos
rbitdd
Returning Responder

Jetzt hab ich's gelöscht, obwohl es vllt. trotzdem hilft.

Also, hier nochmal neu! Smiley Wink

Mir hat das hier geholfen. Vllt. ist das bei Ihrem Fall auch anwendbar.

Grüße!

0 Kudos

Nein, das ist auf meinem Fall leider nicht anwendbar.
<CMS_VALUE_PARAM/> kann nur in einer ContentSelect-Funktion verwendet werden, weil es außerhalb von <QUERY>...</QUERY> liegen muss.
Trotzdem danke für den Tipp!
0 Kudos
rbitdd
Returning Responder

Aber Sie können doch

<FILTERPARAM parameter="Datum" datatype="java.util.Date" value="#global.now-31536000000"/>

definieren.

Ich würde versuchen "#startdate + (-365 * 24 * 60 * 60 * 1000)" an Stelle von "#global.now - 31536000000" zu verwenden. Oder ist "startdate" in dem Context nicht verfügbar? Auf einen Versuch kann man es ankommen lassen, oder? Smiley Wink

0 Kudos

Nein, das funktioniert leider nicht. Beim Speichern erscheint ein Fehler: "For input string: "#startdate"".

Die Systemobjekte lassen sich nur bei <CMS_VALUE_PARAM/> ansprechen, jedoch nicht bei <FILTERPARAM/>.

0 Kudos

Hallo Herr Höbbel,

ich fürchte, dass das nur "indirekt" funktionieren wird.

das habe ich befürchtet.

Ihren Vorschlag, in den Generierungsauftrag ein Skript einzuhängen, habe ich noch nicht verstanden. Was müsste ich tun, um die Queries über ein Skript nachträglich zu verändern?

0 Kudos

Einen ersten Ansatz finden Sie unter javascript:;.

0 Kudos

Funktioniert denn #global.now ohne Berechnungsversuch hinten dran ? Dann würde ich noch als Möglichkeit sehen, den Datensätzen ein "gültig bis" zu verpassen. Das ist zwar auch nicht schön und erfordert Nachpflege sämtlicher Datensätze, aber könnte technisch besser funktionieren.

0 Kudos
feddersen
Community Manager

In ihrer ersten Abfrage verwenden Sie bereits eine solche Überprüfung:

 <LTE attribute="datum" datatype="de.espirit.common.Now" value="1288341564861"/>

0 Kudos