Search the FirstSpirit Knowledge Base
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.
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.
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?
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!