Fremde Tabelle in Drupal Views hinzufügen - eigene Module

Mo, 05.07.2010 - 18:16 -- Daniel Espendiller

Ein Module was wohl in keiner Drupal Installation fehlt ist Views (Ansichten). Hiermit lassen sich Nodes oder andere Datenbankinhalte sehr leicht aufbereiten und strukturiert, ähnlich wie Berichtsprogramme aus richtigen Datenbankanwendungen, ausgeben. Möchte man nun seine eigenen Module in die Views integrieren bzw. Daten von Modulen auswerten, die keine extra Views bieten (z.B. versioncontrol), so kann man das per PHP-Code nachholen. So lasse ich die SVN Commitlogs aus dem Module Version Control API als Block ausgegeben.

View Code erstellen

Damit Views weiß wie es Tabellen ansprechen und verknüpfen soll, muss man mittels mymodule_views_data eine Tabellenstruktur per Array bereitstellen. Da es doch recht mühselig ist ein PHP Array zu erstellen, nimmt man einfach Table Wizard. Hiermit können wir einzelne Tabellen aus der Drupal Datenbank auswählen, Beziehungen definieren und die Tabellen als extra Ansichtstyp zu den Views hinzufügen. Möchte man später den Table Wizard wieder deaktivieren, was zu empfehlen wäre, kann man sich den erzeugten Code exportieren lassen.
Den erzeugten Code fügen wir in mymodule_views_data und geben ihn per return zurück.

function versioncontrol_views_data() {
  $data = array();
  $data['versioncontrol_repositories'] = array(
    [...]
  );
 
  return $data;
}

Feldtypen

Wie man am exportieren PHP Code vom Table Wizard sehen kann, hat jedes Feld einen eigenen Datentyp. Nicht alle Felder können logischerweise direkt richtig erkannt werden z.B. Unixtime Felder für Datum. Hierzu einfach nach views_handler_field google. Da findet man alle möglichen Felder. So bekommt man dann für die Felder die entsprechen Auswahloptionen wie Datumsformat.
Weiter sei hier auch das Module Views Custom Field zu erwähnen. Hiermit kann man direkt in Views ein Feld einbinden und PHP-Code Einfügen z.B. zum Modifizieren einer Feldausgabe.

Externe Daten

Bisher lassen sich Tabellen nur mit Views verwalten, die sich auch innerhalb von der Drupal Datenbank befinden. Nun gibt es mittlerweile ein Patch der in die Entwicklerversion von Views 3.0 eingefügt wurde, somit wird Views zu einer sehr mächtigen Erweiterung.

Disqus - noscript

Habe hook_views_data() und hook_views_api() implementiert ... leider bekomme ich beim Views erstellen meine Gruppe nicht angezeigt? Muss man irgendetwas noch beachten?

Lg Michael