Normalerweise bin ich ja super zufrieden mit meinen Drupal-installationen, aber ab und zu treibt mich auch mal ein Zusatzmodul in den Wahnsinn. Seit kurzem ist es wieder so weit und die Protagonisten dieses Mal sind Views und dessen iCal Feed. Das Problem ist: eigentlich ist Views ordnungsgemäß konfiguriert, nur – es funktioniert nicht. Das heißt, daß im iCal Feed keine Daten enthalten sind. Erst einmal die Konfiguration des Views:
Das ganze resultiert dann in einem SQL-Statement, das wie folgt ausschaut, aber halt kein Ergebnis zur Folge hat, außer dem Header des iCal-Feeds:
Das Spannende oder auch Unverständliche ist aber dann das Resultat, wenn man das SQL-Statement direkt in die Datenbank absetzt:
drupal6_sideburns-# node.type AS node_type
drupal6_sideburns-# FROM node node
drupal6_sideburns-# LEFT JOIN content_type_event node_data_field_datetime ON node.vid = node_data_field_datetime.vid
drupal6_sideburns-# WHERE (node.status <> 0)
drupal6_sideburns-# AND ((TO_CHAR(node_data_field_datetime.field_datetime_value::timestamp with time zone AT TIME ZONE ‘Europe/Berlin’, ‘YYYY-MM-DD’) >= ‘2011-01-01’) OR ((TO_CHAR(node_data_field_datetime.field_datetime_value::timestamp with time zone AT TIME ZONE ‘Europe/Berlin’, ‘YYYY’) <= ‘2011’ AND TO_CHAR(node_data_field_datetime.field_datetime_value::timestamp with time zone AT TIME ZONE ‘Europe/Berlin’, ‘YYYY’) >= ‘2011’)));
node_title | node_type
————————————-+———–
Rockaholics Birthday Bash | event
Tribute to Johnny Cash | event
Fifties Rock’n’Roll und Hula Party | event
A Tribute to Johnny Cash | event
Live Rock’n’Roll Musik! | event
Herbstparty im Herberts | event
Oldies, Schlager, Evergreens & Hits | event
Hansesailparty | event
Live in der Moccabar im KTC Rostock | event
Live im Herberts in Warnemünde | event
Alabama Neujahrs Party | event
(11 rows) drupal6_sideburns=# SELECT node.title AS node_title,
Während also Views selber keine Ergebnisse findet bzw. darstellt, gibt es die gewünschten Ergebnisse sehr wohl – allerdings nur in der Datenbank. Es ist also die Frage, warum Views diese Ergebnisse nicht darstellen kann?
Zur Info sei noch erklärt, daß im View field_datatime als Argument die Granularität "Jahr" (YYYY) hat, während es als Filter die Granularität "Tag" (YYYY-MM-DD) hat. Somit kann man im SQL nachvollziehen, welcher Teil des Statements nun vom Argument und welcher vom Filter kommt.