.

Welche Drupal-Entwicklungstools lohnen sich? 7 praktische Lösungen

Bei der Erstellung von Websites mit Drupal sollten wir als Entwickler versuchen, unsere Arbeit zu erleichtern. Modulverwaltung, Benutzerverwaltung, Codegenerierung – all diese Prozesse können automatisiert und mit einfachen Befehlen ausgeführt werden. In diesem Artikel werfen wir einen Blick auf die verfügbaren Tools und diskutieren sie anhand konkreter Anwendungsbeispiele.

1. Drupal Console

Drupal Console ist eine leistungsstarke Kommandozeilenschnittstelle. Sie wird verwendet, um Boilerplate-Code zu generieren und Drupal zu warten und zu debuggen. Die neueste Version dieses Tools ist v1.9.8 und wurde am 28. November 2021 veröffentlicht.

Um Drupal Console zu unserem Projekt hinzuzufügen, müssen wir nur einen Befehl verwenden:

composer require drupal/console:~1.0 \
--prefer-dist \
--optimize-autoloader

Danach können wir verschiedene Befehle der Drupal Console verwenden. Nachfolgend geben wir einige Beispiele an.

Modulerstellung:

drupal generate:module  \
  --module="modulename"  \
  --machine-name="modulename"  \
  --module-path="/modules/custom"  \
  --description="Mein großartiges Modul"  \
  --core="8.x"  \
  --package="Custom"  \
  --module-file  \
  --composer  \
  --test  \
  --twigtemplate

Entity-Erstellung:

drupal generate:entity:content  \
  --module="modulename"  \
  --entity-class="DefaultEntity"  \
  --entity-name="default_entity"  \
  --base-path="/admin/structure"  \
  --label="Standardentität"  \
  --is-translatable  \
  --revisionable
  --has-forms

Service-Erstellung:

drupal generate:service  \
  --module="modulename"  \
  --name="modulename.default"  \
  --class="DefaultService"  \
  --interface  \
  --interface-name="InterfaceName"  \
  --path-service="/modules/custom/modulename/src/"

Benutzererstellung:

drupal user:create  username password  \
  --roles='authenticated'  \
  --email="[email protected]"  \
  --status="1"

Wie wir sehen können, bietet uns Drupal Console viele Möglichkeiten. Eine weitere interessante Option, die diese CLI bietet, ist das Ausführen eines lokalen PHP-Servers, um unsere Website zu testen.

$ drupal server

Dieser Befehl startet einen lokalen Server für uns auf Port 8088.

2. Beispiele für Entwickler

Das Examples for Developers Projekt ist eine großartige Sammlung von Beispielen dafür, wie wir unsere eigenen Module in Drupal schreiben können. Wir haben 33 verschiedene Module zur Verfügung, von einfachen Blöcken über verschiedene Arten von Formularen bis zu Controllern mit REST-API-Unterstützung. Wahrscheinlich finden wir hier alles, was wir brauchen. Dieses Modul wird es uns ermöglichen, neue Dinge zu lernen und schneller zu arbeiten.

3. Devel

Das Devel-Modul enthält zusätzliche Funktionen und Hilfeseiten für Entwickler und Administratoren. Es bietet uns Blöcke und Toolbars zum schnellen Zugriff und Entwicklerinformationen. Wir können es verwenden, um einen anderen Benutzer zu „simulieren“. Diese Funktionalität ist besonders hilfreich, wenn wir Rollen und Berechtigungen in Drupal testen müssen. Devel bietet uns Funktionen, die beim Debuggen helfen. Und das Sahnehäubchen – wir können es verwenden, um Testinhalte zu generieren.

Um dieses Modul zu installieren, verwenden wir Composer.

composer require --dev drupal/devel

4. Gewicht

Manchmal kommt es in unserem Projekt vor, dass wir Module verwenden, die die gleichen Hooks nutzen. Standardmäßig erlaubt Drupal nicht die Auswahl der Ausführungsreihenfolge der Module. Allerdings können wir diese Einschränkung auf drei Arten umgehen.

Methode 1 – Festlegen des Modulgewichts bei der Installation

In der install-Datei unseres Moduls können wir HOOK_install hinzufügen und verwenden, um das Modulgewicht festzulegen.

Drupal 9 bietet eine integrierte Funktion, um dieses Problem zu lösen:

function your_module_name_install() {
  module_set_weight('[your_module_name]', [your_preferred_weight]);
}

In Drupal 7 ist es ein wenig komplizierter, da wir dieses Feld in der Datenbank selbst ändern müssen:

function your_module_name_install() {
  db_update('system')
    ->fields(array('weight' => your_preferred_weight))
    ->condition('name', '[your_module_name]', '=')
    ->execute();
}

Methode 2 – Ändern des Gewichts in core.extension.yml

Wenn wir Konfigurationen in unserem Projekt verwenden, können wir das Gewicht unseres Moduls in der core.extension.yml-Datei nach dem Exportieren der Konfigurationen ändern. Das Gewicht wird als Zahl nach dem Modulnamen angezeigt. Je größer das Gewicht, desto früher werden die Methoden im Modul ausgeführt.

Methode 3 – Verwendung von Modules Weight

Das Modules Weight Modul für Drupal ermöglicht eine benutzerfreundliche Konfiguration der Modulgewichte. Wenn wir zur Konfigurationsseite (/admin/config/system/modules-weight/configuration) gehen, sehen wir Folgendes:

Einstellung von Modulgewichten in einem Drupal-Entwicklungstool – Modules Weight

Hier können wir die Gewichte unserer Module einfach festlegen.

5. Settings.php und services.yml

Diese beiden Dateien finden wir im sites-Ordner unserer Drupal-Installation. Mit nur wenigen Zeilen wird die Softwareentwicklung erheblich vereinfacht. Es ist eine gute Idee, eine settings.dev.php-Datei anzulegen und alle Änderungen dort einzutragen. Während der Entwicklung können wir sie in die Hauptdatei settings.php einfügen und entfernen, wenn wir unsere Website auf den Server hochladen.

Eine noch bequemere Option ist die Verwendung einer Umgebungsvariable wie ENV und Setzen auf "dev". Dann überprüfen wir in der settings.php-Datei, ob eine settings.$env.php-Datei existiert. Falls ja, fügen wir sie ein.

.
$env = getenv("D_ENV");

if (file_exists($app_root . '/' . $site_path . '/settings.' . $env . '.php')) {
  include $app_root . '/' . $site_path . '/settings.' . $env . '.php';
}

Wir können alle unsere Unterstützungsänderungen für die Entwicklung in die settings.dev.php-Datei einfügen.

Was genau können wir dort tun?

1. Fehleranzeige zusätzlich zur Meldung, dass ein Problem auf unserer Website aufgetreten ist, aktivieren.

$config['system.logging']['error_level'] = 'verbose';

2. CSS- und JS-Aggregation deaktivieren – etwas, das wir oft vergessen, wenn wir JS-Stile oder -Skripte bearbeiten.

$config['system.performance']['css']['preprocess'] = FALSE;
$config['system.performance']['js']['preprocess'] = FALSE;

3. Render-Cache deaktivieren:

$settings['cache']['bins']['render'] = 'cache.backend.null';

4. Die development.services.yml-Datei einfügen.

$settings['container_yamls'][] = $app_root . '/' . $site_path . '/development.services.yml';

Der Inhalt der letzten Datei könnte wie folgt aussehen.

parameters:
  twig.config:
    debug: true
    auto_reload: null
    cache: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory

Wir aktivieren das Twig-Debugging. Das sind hilfreiche Kommentare in der HTML-Struktur, die es uns erleichtern, eine Template-Datei zu finden oder Hooks zu erstellen. Zusätzlich deaktivieren wir den Cache. Außerdem fügen wir den cache.backend.null-Service hinzu, den wir zuvor verwendet haben, um den Render-Cache zu deaktivieren.

6. Lando

Es ist ein Tool, das die lokale Entwicklung unserer Website erleichtert. Es ermöglicht uns buchstäblich alles zu betreiben und basiert auf Docker. Wir haben eine CLI zur Verfügung, die uns eine einfache Verwaltung unserer Installationen ermöglicht. Um eine Drupal-Installation lokal einzurichten, benötigen wir nur wenige Befehle.

Zuerst erstellen wir ein Drupal-Projekt mit Composer.

composer create-project drupal/recommended-project lando-demo

Dann gehen wir zu dem erstellten Verzeichnis und führen den Befehl aus:

lando init
  • Wählen Sie drupal9 als recipe,
  • benennen Sie Ihr Webroot web,
  • und benennen Sie dann Ihr Projekt.

Nach diesem Prozess wird eine .lando.yml-Datei erstellt. Dort finden wir viele verschiedene Informationen, wie z.B. den Namen unseres Projekts, welche Services wir verwenden (initial sind dies appserver und database), Adressen unserer Anwendung, PHP-Version oder Zugangsdaten für unsere Datenbank.

Als nächstes führen wir den Befehl

lando start

aus. Jetzt können wir zur in .lando.yml angegebenen Adresse gehen und die Drupal-Installation abschließen.

7. Drush

Ein Tool, das jeder Drupal-Entwickler kennen sollte. Drush begleitet uns seit Drupal 4.7 und wird weiterhin entwickelt. Zum Zeitpunkt der Erstellung dieses Textes ist die neueste Version 11.0.8, die am 9. April 2022 veröffentlicht wurde. Drush ermöglicht es uns, unsere Website zu verwalten, indem wir Konfigurationen importieren und exportieren, die Datenbank aktualisieren oder den Cache bereinigen. Neuere Versionen dieses Tools ermöglichen es uns auch, Code zu generieren. Schauen wir uns einige nützliche Befehle an:

Cache-Bereinigung

drush cr

Konfigurationsimport

drush cim

Konfigurationsexport

drush cex

Erstellung eines Einmalkonto-Link

drush uli

Modulaktivierung

drush en module_name

Moduldeaktivierung und -entfernung

drush pmu module_name

Datenbankaktualisierung

drush updb

Watchdog-Überprüfung (dblog Modul)

drush ws

Wenn es um die Codegenerierung geht, haben wir viele Optionen zur Auswahl. Wir empfehlen den Befehl

drush generate

zu verwenden und die für uns interessanteste Option zu finden.

Drupal-Entwicklungstools - Zusammenfassung

Wir haben einige interessante Tools durchgearbeitet, die wir bei der Arbeit mit Drupal verwenden können. Wie wir sehen können, kann die Drupal-Entwicklung recht zügig und angenehm sein, wenn wir die Werkzeuge kennen, die die Arbeit erleichtern. Es ist gut, sich etwas Zeit zu nehmen, um diese Lösungen zu erkunden. Diese Investition wird sich schnell auszahlen!

3. Best practices for software development teams