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
t_thalmann
Returning Observer

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.

Es  gibt ein Feld "datum_archivierung", das festlegt, wann eine Nachricht  nicht mehr angezeigt wird. Allerdings ist dieses Feld kein Pflichtfeld;  eine Nachpflege können wir in der Webentwicklung nicht leisten.

Die Logik soll die sein, dass, wenn dieses Feld nicht ausgefüllt  ist, eine News-Detailseite nach einem Jahr nicht mehr generiert wird.

#global.now in value="" funktioniert nicht, unabhängig von weiteren Berechnungen, datatype="de.espirit.common.Now" entspricht dem aber 100%ig. Ohne Zeitdifferenz ist dies allerdings für mich wertlos, denn ich will ja alle Datensätze, die neuer sind als ein Jahr, auswählen.

0 Kudos

Aber wie verwende ich ein solches Skript im Zusammenhang mit einer Generierung?

Das ist mir leider völlig unklar.

Wo hänge ich das ein, und wie verändere ich damit Queries?

0 Kudos
Alexander_Haufl
I'm new here

Was spricht dagegen den value leer zu lassen und dieses im Sitestore manuell einzutragen?

 <FILTERPARAM parameter="Datum" datatype="java.util.Date" value=""/>
Dann können Sie das Datum beliebig setzten!
0 Kudos