Drupal: Kitchen Sink

Drupal hat eine extrem steile Lernkurve. Bei labor b komme ich oft in die Situation mit Entwicklern zusammen zu arbeiten, die bisher wenig oder überhaupt keine Drupal-Erfahrung sammeln konnten. Eine sinnvolle Zusammenarbeit ist da manchmal nur schwer möglich. Um insbesondere Theme-Entwicklern den Einstieg zu erleichtern, habe ich das Kitchen Sink-Modul entwickelt.

Drupal Lernkurve
Drupal Lernkurve (gefunden auf quora.com)

Aber lasst mich ein wenig ausholen. Unser bisheriger Workflow bei labor b sah vor, dass externe Entwickler oder neue Entwickler ohne Drupal-Kenntnisse für Drupal-Projekte zunächst eine statische Seite in Form eines Skeletons vorbereiteten. Dieser wurde dann anschließend von einem Drupal-Entwickler in ein Drupal-Theme verwandelt.

An dieser Stelle traten oft Probleme auf, da der Skeleton beispielsweise auf eine andere jQuery-Version setzte, als in der jeweiligen Drupal-Version vorgesehen. Auch wurde hier oft umständlich entwickelt, was in Drupal bereits von Haus aus vorhanden war. Zum Beispiel die Reaktion auf dynamische Veränderungen der Webseite (beispielsweise über Ajax-Requests). Hier bietet Drupal mit seinen Behaviors bereits eine standardisierte Lösung an.

Mit dem Kitchen Sink-Modul habe ich nun eine Lösung zur Verfügung gestellt, die eine Entwicklung des Themes oder (oder fast ohne) Drupal-Kenntnisse erlaubt. Dafür führt das Modul eine von Drupal losgelöste Template-Logik ein.

Nachdem das Modul aktiviert ist, können Template-Dateien im jeweiligen Drupal-Theme in einem Ordner kitchen-sink hinterlegt werden. Template-Dateien können entweder statische HTML-Dateien oder PHP-Dateien sein. Über den Pfad kitchen-sink können diese Dateien nun aufgerufen werden. Die Datei test.php ist dann beispielsweise über http://www.example.com/kitchen-sink/test aufrufbar. Eine Datei foo.html entsprechend über http://www.example.com/kitchen-sink/foo. Ein Aufruf von http://www.example.com/kitchen-sink zeigt immer das Template default.php an.

Der Clou daran ist, dass die Template-Dateien innerhalb von Drupals Theme-Logik eingebunden werden. Entsprechend funktionieren auch die Behaviors und Drupal stellt seine eigene jQuery-Version zur Verfügung. Es gibt dann zumindest an dieser Stelle keine Übertragungsprobleme mehr. Die Entwickler können dann einfach mit reinem PHP oder HTML das Markup vorbereiten und müssen ggf. lediglich lernen Drupal-Behaviors einzusetzen. Eine Einarbeitung in Drupal oder Twig entfällt.

Übrigens kann man den überflüssigen Markup von Drupal für die Kitchen Sink entfernen, wenn man in einer Datei page--kitchen-sink.tpl.twig dies Ausgabe auf den eigentlichen Content reduziert. Pro-Tip!

Abschließend möchte ich noch erwähnen, dann Kitchen Sink ein reines Development-Modul ist. Es sollte also deaktiviert werden, sobald die Seite produktiv gegangen ist. Zudem sollten die Dateien im kitchen-sink-Ordner innerhalb des Themes ggf. von Euch geschützt werden.

Das Modul ist derzeit nur auf Github verfügbar. Wenn ich wieder mehr Zeit habe, werde ich das Modul auch auf drupal.org veröffentlichen. Solange nutzt bitte den Issue-Queue bei Github für Bugs und Änderungswünsche.

Noch keine Kommentare vorhanden.