Theming in Drupal 8 - Umbau eines Themes auf Twig
Ich schließe mich mit diesem Blog Beitrag der erfolgreichen und beliebten "Theming in Drupal 8 - alles neu mit Twig?" - Reihe von Steffen an.
Befassen werde ich mich mit dem Umbau eines Themes auf Twig als Template Engine. So wie es erst letztens bei unserem Busy Theme vorgenommen wurde.
Zu aller erst sei gesagt, Drupal 8 hat als Standard Template Engine Twig. Das heißt wenn keine weitere Einstellung in der THEME_NAME.info.yml getroffen wurde, wird Twig als Template Engine verwendet.
Wenn das Theme bisher auf phptemplate basierte, muss also in der THEME_NAME.info.yml die Zeile "engine: phptemplate" einfach gelöscht werden. In folgendem Beispiel Zeile #5:
- name: Busy
- type: theme
- description: 'The ultimate Drupal business theme.'
- core: 8.x
- engine: phptemplate
Danach kann es an das eigentliche Umbauen gehen, hierzu sollte man die Syntax und Grundfunktionen von Twig kennen.
Hierzu kopiert man sich die Template-Datei und bennent sie von TEMPLATE_NAME.tpl.php nach TEMPLATE_NAME.html.twig um. Jetzt geht man jede Zeile der Datei durch und ersetzt die PHP-Befehle durch Twig-Befehle.
Folgendes Beispiel zeigt eine solche Umwandung an einfachen Ausgaben, If-Anweisungen und einer Übersetzungsfunktion.
- <div id="comments" <?php print $attributes; ?>>
- <?php print render($content['comments']); ?>
- <?php if ($content['comment_form']): ?>
- <h2 class="title"><?php print t('Post new comment'); ?></h2>
- <div>
- <?php print render($content['comment_form']); ?>
- </div>
- <?php endif; ?>
- </div>
Ähnlich sieht es auch bei Arrays und For-Schleifen aus.
- foreach ($users as $user) {
- echo $user;
- }
Und wer sich noch ein wenig Arbeit sparen möchte, der kann auch zu dem Drupal-7-Modul Twigify (Sandbox-Projekt) greifen. Das Modul versucht so weit es geht das vorhandene Theme auf Twig umzubauen. Wobei komplexere Codestellen nicht automatisch gelöst werden, sondern immer noch händisch nachbearbeitet werden müssen.
Also scheut euch nicht davor eure Themes auf Twig umzubauen, denn es ist garnicht so schwer wie es zu aller erst aussieht!