Drupals Views-Modul mit PHP erweitern

Drupals Views-Modul mit PHP erweitern

Das Views-Modul ist ein sehr mächtiges Werkzeug und eines der unverzichtbarsten Drupal-Module. Manchmal kommt man mit den vorhandenen Funktionen aber trotzdem an eine Grenze. Um diese zu überschreiten brauch es manchmal nur ein paar Zeilen PHP-Code. In diesem Blogbeitrag hatte ich gezeigt, wie man in Drupal 6 eingebettete Views mit einem CCK-Feld und etwas PHP steuern kann. Für Drupal 7 gibt es für den gleichen Zweck das Modul Views PHP.


Wenn man dieses installiert findet man in den Views-Feldern eine neue Option: "Global: PHP".


PHP-Feld in View einbinden


Fügt man das Feld, kann man hier direkt PHP-Code eintragen.


PHP-Code in Drupal-View einbinden


Achtung: es gibt zwei PHP-Felder. Das erste nimmt den Code auf, um einen Wert für das Feld zu konstruieren. Hier darf auf keinen Fall der Delimiter <?php ?> eingetragen werden. Im zweiten Feld, das den Code für die Ausgabe enthält, muss man den Delimiter dagegen setzen! Hier ein Beispiel mit dem in der ersten Zeile der Inhalt des Feldes "adresse_karte" ausgegeben wird und in der zweiten Zeile die Node-ID:


Ausgabe des Feldwertes und der Node-ID mit Views PHP


Und so sieht die Ausgabe des Views aus


Ausgabe des Views mit PHP


Jetzt kann man direkt auf die diversen Variablen des Views zugreifen und eigene SQL-Abfragen schreiben.


Available variables


    $view: The view object.

    $handler: The handler object.

    $static: A variable that can be used to store reusable data per row.

    $row: Contains the retrieved record from the database (e.g. $data->nid).

    $row->php: Global: PHP

    $row->title: Inhalt: Titel

    $row->field_adresse_karte: Inhalt: Adresse (für Karte)

    $row->field_ol_locator_geofield: Inhalt: Geofield

    $row->distance: Proximity: Distance

    $data: Contains the retrieved record from the database (e.g. $data->nid).

    $value: Value of this field.

 


Und noch ein Hinweis für alle, die das bisher schon unter Drupal 6 verwendet haben: Der Mechanismus wie Drupal Variable ausliest hat sich in Drupal 7 geändert.


In Drupal 6 hat $row->field_mein_feld den Wert des Feldes geliefert. In Drupal 7 erhält man mit dem gleichen Code nur den Schlüsselwert (z.B. die Node-ID nid). Den eigentlichen Feldwert erhält man jetzt mit $data->field_field_mein_feld['0']['raw']['value'];