
Een thema is een verzameling bestanden die het presentatieniveau bepalen. Je kunt ook een of meerdere “subthema’s” of varianten van een thema maken. Alleen een .info.yml-bestand is vereist, maar de meeste thema’s en subthema’s gebruiken ook andere bestanden. Op deze pagina worden de bestanden en mappen opgesomd die zich in een typisch thema of subthema bevinden.


Het toevoegen van regio’s aan een thema vereist:
- Het toevoegen van regiometadata in het bestand THEMENAME.info.yml.
- Het bewerken van page.html.twig en het afdrukken van de nieuwe regio’s.
Opmerking: Als je in je thema één of meer regio’s declareert, zelfs maar één, dan worden de standaardregio’s niet langer toegepast. Je bent dan zelf verantwoordelijk voor het definiëren van alle regio’s die je wilt gebruiken.


Deze documentatie is bedoeld voor thema’s. Voor informatie over modules, zie Stijltabellen (CSS) en JavaScript (JS) toevoegen aan een Drupal 8-module.
In Drupal 8 worden stijltabellen (CSS) en JavaScript (JS) via hetzelfde systeem geladen voor zowel modules (code) als thema’s: asset libraries.
Ter verduidelijking: deze instructies zijn ALLEEN bedoeld voor thema’s en zijn niet van toepassing op modules.


Twig is een template-engine voor PHP en maakt deel uit van het Symfony2-framework.
In Drupal 8 vervangt Twig PHPTemplate als de standaard template-engine. Een van de gevolgen hiervan is dat alle theme_*-functies en *.tpl.php-bestanden van PHPTemplate zijn vervangen door *.html.twig-sjabloonbestanden.


Drupal laat je toe om alle sjablonen die gebruikt worden voor het genereren van HTML-markup te overschrijven, zodat je volledige controle hebt over de markup die in je thema wordt weergegeven. Er bestaan sjablonen voor elk element van de pagina, van de algemene HTML-structuur tot kleine velden.
Sjablonen overschrijven
Je kunt de basis Drupal-sjablonen overschrijven door sjablonen toe te voegen aan je themamap die overeenkomen met een specifieke naamgevingsconventie.
Om sjablonen te overschrijven moet je:


Drupal laadt sjablonen op basis van bepaalde naamgevingsconventies. Dit stelt je in staat om sjablonen te overschrijven door ze aan je thema toe te voegen en specifieke namen te geven.
Nadat je een sjabloon hebt toegevoegd, moet je de cache opnieuw opbouwen zodat Drupal je nieuwe sjabloon herkent.


Over Twig
Twig is een gecompileerde template-taal gebaseerd op PHP. Wanneer je webpagina wordt weergegeven, neemt de Twig-engine het sjabloon en zet dit om in een “gecompileerd” PHP-sjabloon dat wordt opgeslagen in een beveiligde map op sites/default/files/php/twig. De compilatie gebeurt één keer, sjabloonbestanden worden gecachet voor hergebruik en opnieuw gecompileerd bij het legen van de Twig-cache.


Wanneer je met een Twig-sjabloonbestand werkt, worden de meeste variabelen gedocumenteerd in de commentaren van het sjabloonbestand. Maar als dat niet zo is, of wanneer thema’s of modules nieuwe variabelen introduceren, hebben we een manier nodig om alle variabelen te ontdekken die binnen het sjabloon beschikbaar zijn. Twig biedt de functie dump() om variabelen te detecteren en te controleren in sjabloonbestanden.
De dump()-functie toont geen uitvoer als debugging niet is ingeschakeld. Lees hoe je Twig-debug inschakelt.


De Twig-template-engine biedt een debugtool.
De implementatie van Drupal 8 voegt ook een extra hulpmiddel toe dat je helpt om het sjabloon te vinden dat de markup genereert.
Waarschuwing: het inschakelen van Twig-debug kan sommige delen van de site breken, vooral Views. Zie dit issue.
Debug inschakelen
Je schakelt Twig-debug in via sites/default/services.yml.


Hoe Twig normaal werkt
Standaard compileert de Twig-themingengine sjablonen naar PHP-code en slaat de gecompileerde code op in het geheugen. De gecompileerde code is niet handig voor ontwikkeling, omdat wijzigingen in Twig-sjablonen niet onmiddellijk zichtbaar worden op je Drupal-site.
Nadat Twig bepaalde markup heeft gerenderd, komt er nog een extra cachelaag vanuit de Render API. Deze cachet de markup die Twig heeft aangemaakt, zodat Twig helemaal niet betrokken is bij volgende paginaverzoeken. Hierdoor worden Twig-debuginstellingen uiteindelijk genegeerd.
