Views - DATE-Problem
Eingetragen von UwBach (310)
am 09.06.2008 - 16:13 Uhr in
am 09.06.2008 - 16:13 Uhr in
Für ein eigenes Modul benötige ich den Zugriff mit dem Modul Views, an sich kein Problem.
Ich habe die Funktion xx_views_tables()implementiert. Allerdings habe ich in der DB auch DATE-Formate (2008-06-09) mit denen Views so nicht klar kommt. Die Lösung scheint die Übergabe des Datumsformat als unix_timestamp zu sein. Dann habe ich die Möglichkeit die Funktionen von Views zu nutzen.
Die Query soll später so aussehen:
SELECT node.nid FROM {node} node LEFT JOIN {meinenode} meinenodeON node.nid = meinenode.nid WHERE (node.type IN ('meinenode')) AND (UNIX_TIMESTAMP(meinenode.anzeige_von) <= 1213023816 + 0) AND (UNIX_TIMESTAMP(meinenode.xxx_bis) >= 1213023816 + 0)
Die Funktion soll als Filter aufgerufen werden:
'xxx_von' => array(
'handler' => 'views_handler_filter_timestamp',
'help' => t('Ab jetzt anzeigen'),
'name' => 'Datum von',
'operator' => 'views_handler_operator_gtlt',
Hat jemand einen Ansatz für das Problem?
Gruß
UwBach
- Anmelden oder Registrieren um Kommentare zu schreiben
Views - DATE-Problem
am 10.06.2008 - 14:28 Uhr
Ist gelöst. Ich habe einen eigenen Handler implementiert.
Der Filter:
'xxx_von' => array(
'handler' => 'views_handler_filter_meinModul_date',
'help' => t('Ab jetzt anzeigen'),
'name' => 'Datum von',
'operator' => 'views_handler_operator_gtlt',
Der Handler:
function views_handler_filter_meinModul_date($op, $filter, $filterinfo, &$query)
{
if($filter['value'] == 'now')
{
$query -> ensure_table('meinModul');
$query -> add_where('UNIX_TIMESTAMP('.$filter['field'].') '.$filter['operator'].' UNIX_TIMESTAMP()');
}
} // END views_handler_filter_meinModul_date()
Die Query daraus:
SELECT node.nid FROM {node} node LEFT JOIN {meinModul} meinModulON node.nid = meinModul.nid WHERE (node.type IN ('meinNode')) AND (UNIX_TIMESTAMP(meinModul.anzeige_von) <= UNIX_TIMESTAMP()) AND (UNIX_TIMESTAMP(meinModul.anzeige_bis) >= UNIX_TIMESTAMP())
Der Handler kann noch erweitert werden, je nach dem welche Eingaben man zulassen möchte.
Gruß
UwBach