Es ist ganz schön lästig, wenn man beim Entwickeln von Themes in Drupal 8 jedes Mal den Cache unter „Configuration > Performance“ löschen muss, damit Änderungen übernommen werden. Hier ist eine kurze Info, wie der Cache für die Zeit der Entwicklung deaktiviert werden kann – und Twig-Debugging zur Unterstützung beim Themes-Entwickeln aktiviert werden kann.
settings.local.php
Als ersten Schritt nehmen wir die Datei „example.settings.local.php“ im Ordner „sites“ und kopieren sie in den Unterordner „default„. Dies geht nicht ganz so einfach, da der Unterordner schreibgeschützt ist. Daher muss man dem Besitzer des Ordners und der einzelnen Dateien zunächst Schreibrechte geben – entweder über das WebFTP-Programm des Hosters oder über FileZilla:
Anschließend die Datei von „example.settings.local.php“ in „settings.local.php“ umbenennen.
Natürlich nicht vergessen, nach dem Entwickeln der Site und vor dem Online-Stellen nicht nur die Caching-Settings zurückzusetzen, sondern auch den Schreibschutz für das Verzeichnis wieder einzurichten!
Nun in der Datei bei folgender Zeile das Kommentarzeichen entfernen:
$settings['cache']['bins']['render'] = 'cache.backend.null';
Dies sieht dann so aus:
settings.php
Nun zur Datei „settings.php“ wechseln (ebenfalls im Verzeichnis „default“) und folgende Zeilen entkommentieren. Damit wird die oben bearbeitete Datei erst geladen.
Achtung:
Sollte ein Fehler auftreten – einfach Drupal mit der Datei /rebuild.php aufrufen.
Der Fehler sollte nun nicht mehr auftreten.
development.services.yml
Nun bearbeiten wir die Datei „development.services.yml„, im Überordner „sites“, und ergänzen folgendes:
parameters:
twig.config:
debug: true
auto-reload: true
cache: false
Nun löschen wir den Cache unter „Configuration > Performance“ ein letztes Mal.
Überprüfen, ob Twig-Debugging aktiviert ist
Im Quelltext der Seite müssten Kommentare, wie beispielsweise <!-- THEME DEBUG -->
zu finden sein:
Überprüfen, ob der Cache deaktiviert ist
Änderungen in der HTML-Struktur, beispielsweise in „page.html.twig“ müssten sofort nach einem Refresh übernommen werden.