drupal 7

Drupal 7 Datenbank-Abfragen mit EntityFieldQuery

Eine wertvolle Neuerung aus Drupal 7 ist die EntityFieldQuery API. Hiermit können programmatische Inhalts-Abfragen über jede definierte Entität getätigt werden. Wollte man in Drupal 6 programmatisch eine Datenbankabfrage über bestimmte CCK-Felder machen, empfahl es sich aus Kompatibilitätsgründen mit Views eine Abfrage zu erstellen, diesen dann im Code zu laden und auszuführen. So war sichergestellt, dass kein Update am CCK Modul oder Veränderungen an der Datenstruktur zu Kompatibilitätsproblemen mit dem eigenen db_query()-Call führten. EntityFieldQuery ist eine alternative und deutlich bessere Abstraktionsschicht für diesen Anwendungsfall, denn es ist eine Drupal 7 Core Funktionalität und kein Modul in dessen Abhängigkeit man sich begibt, es arbeitet für simple Calls deutlich performanter als Views und es kann extrem flexibel eingesetzt und sogar um eigene Methoden erweitert werden. Die Fähigkeiten und Performance dieser API gehen soweit, dass es zu einer Grundüberlegung gemacht werden sollte, ob man für eine Darstellung von Inhalt das Views Modul oder doch lieber ein eigenes Modul mit EntityFieldQuery nutzen sollte.

Drupal 7 Performance Optimierung

Performance Optimierung ist ein wichtiges Thema bei der Arbeit mit Drupal 7. Denn Drupal ist ein System, dass zum Installationszeitpunkt schnell ist, wie der Wind, aber sich mit wachsender Seitenkonfiguration nach und nach verlangsamt. Das hat zum einen mit der Tatsache zu tun, dass Drupal eine starke Bindung an seine Datenbank hat und die Abfragen bei jedem Page-Request bei unvorsichtiger Konfiguration schnell mal in den dreistelligen Bereich steigen können. Zum anderen liegt das auch an der modularen Architektur, denn bei jedem Bootstrap werden alle aktivierten Module inkl. ihrer Hooks und Konfigurationseinstellungen abgearbeitet und zusammengestellt. Der Segen des Einen wird zum Fluch des Anderen, denn verzichtet man auf Module, schränkt man genau die Vorteile von Drupal ein, die das CMS möglicherweise überhaupt erst zum System der Wahl gemacht haben. Aber natürlich gibt es Abhilfe und eine High Performance Seite auf Basis von Drupal ist mit ein paar Grundregeln und einigen Anpassungen möglich.

Drupal Standard-Startseite (River of news) entfernen

Die Drupal Startseite besteht standardmäßig aus einem sogenannten River of news, eine Auflistung der neusten Beiträge im CMS. Zwei Möglichkeiten bietet das System von Haus aus, damit umzugehen: Anzahl an Beiträgen für die Startseite beschränken oder einen einzelnen Beitrag als Startseite festlegen. Mit dem Views-Modul kann man zusätzlich eine eigene Ausgabe zusammenkonfigurieren und diese dann als Startseite definieren. Wer aber seine Startseite gerne ohne einen extra dafür angelegten Beitrag (z.B. nur mit Blöcken) zusammenstellen möchte, ist gekniffen. Leider ist das genau der Weg, den ich bei jedem Projekt einschlagen muss. Zum Glück ist in Drupal 7 der Haupt-Seiteninhalt ebenfalls ein Block. Einfach deaktivieren (oder nur für <front> deaktivieren) geht aber dummerweise nicht. Abhilfe gibts - wie so oft - über einen Hook...