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.
Juli 21, 2017 by mb21
mb21
Hallo Manuel,
danke erstmal für die hilfreichen Anleitungen mit Drupal 8! Irgendwo habe ich einen Fehler drinnen und finde ihn aber nicht. Nachdem ich alles laut deiner Anleitung durchgeführt habe, aktualisieren sich diverse Änderungen in der page.html.twig nicht, nach einem Refresh. Erst wenn ich den Cache wieder lösche. Wärest du so nett und schaust dir das mal an?
[development.services.yml]
# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# ‚example.settings.local.php‘ file, which sits next to this file.
parameters:
http.response.debug_cacheability_headers: true
services:
cache.backend.null:
class: Drupal\Core\Cache\NullBackendFactory
parameters:
twig.config:
debug: true
auto-reload: true
cache: false
[settings.php]
if (file_exists($app_root . ‚/‘ . $site_path . ‚/settings.local.php‘)) {
include $app_root . ‚/‘ . $site_path . ‚/settings.local.php‘;
}
[settings.local.php / wurde nach default kopiert]
$settings[‚cache‘][‚bins‘][‚render‘] = ‚cache.backend.null‘;
Die DEBUG Kommentare werden auch bei mir im Quelltext ausgegeben, jedoch teilweise in rot und nicht alles in grün wie bei dir. Grundsätzlich geht es aber darum dass der geänderte Code nicht refrehst.
Vielen Dank für deine Hilfe und Grüße,
mb21