Drupal Module programmieren - Datenbankabfragen mit Views

Das Views-Modul für Datenbankabfragen zu verwenden kann einige Vorteile haben. Die Datenbankstrukturen in einer Drupal Installation sind nicht immer besonders beständig. Das CCK Modul beispielsweise erstellt oft sehr komische Querverweise und generiert neue Spalten in bereits bestehenden Tabellen. Eine Datenbankabfrage dafür selber zu erstellen wird wahrscheinlich dazu führen, das beim nächsten CCK Update nichts mehr funktioniert. Die Views API hingegen meistert so etwas tadellos. Aber genug um den heißen Brei herum geredet. Hier eine kurze Anleitung, wie es geht:

Das erste was man dazu tun muss ist, sich in aller Ruhe und mit dem ganzen Komfort, den das Modul bietet, eine Ansicht konfigurieren, die genau das liefert, was die Datenbankabfrage im eigenen Modul später liefern soll. Hat man das erledigt, kann man im Views Hauptmenü unter Werkzeuge den Unterpunkt "Massenexport" auswählen (vorausgesetzt man hat das Views-Modul "Views Export" aktiviert). Hier einfach nur noch die entsprechende Ansicht auswählen und unten den Namen des eigenen Moduls eintippen. Views erstellt jetzt einen Satz Dateien der schon perfekt für das eigene Modul vorformatiert ist.

Wenn man den Anweisungen des Views-Exporter folgt, hat man den Grundstein gelegt. Was jetzt nämlich passiert ist, dass beim Aktivieren des eigenen Moduls automatisch die eben exportierte Ansicht erstellt wird. Das funktioniert auf jeder Seite, auf der Views installiert ist, also auch auf der Seite des Kunden bzw. des fremden Benutzers deines Moduls. Man braucht beim Kunden nichtmal den Views-Exporter installieren, die Ansicht erstellt sich auch so.

Alles was man dann noch tun muss ist, die Ansicht programmatisch zu nutzen. Dafür reichen zwei Befehle:

$view = views_get_view('nameofmyview');
$view->execute();

Hat man die beiden Befehle ausgeführt steht einem das Array

$view->result

zur Verfügung, indem sich die Ausgabetabelle des Queries befindet. In jedem Eintrag des Arrays befindet sich ein Objekt. Mit einer einfachen Schleife lässt sich das ausgeben:

foreach($view->result as $key=>$value) {
  print $value->mycolumnname;
}

Mehr gibt es nicht zu tun. Die einzige wirkliche programmiertechnische Leistung besteht also darin, zwei Zeilen Code auszuführen und sich dann die gewünschten Infos aus einem perfekt verschachtelten Objekt zu ziehen. Wer da noch lange SQL-Queries schreibt ist es selber schuld :)