Темизация на Drupal 8 с использованием шаблонизатора Twig

Опубликовано: 08.10.2017

видео Темизация на Drupal 8 с использованием шаблонизатора Twig

PHP. Шаблонизатор Twig. Урок 1. Базовые возможности. (Виктор Гавриленко - Webformyself)

В Drupal 7 при разработке темы стандартным шаблонизатором применялся созданный Адрианом Россоувом движок PHPTemplate. С выходом Drupal 8 и интеграцией с проектом Symfony 2, темизация выходит на новый уровень абстрактности, и все благодаря встроенному компилируемому обработчику шаблонов на языке PHP - Twig.



Основы темизации с Twig

Для Drupal разработчика это нововведение означает полный отказ от использования PHP-кода в шаблонах темы. Однако синтаксис Twig настолько простой и удобный, что время на разработку шаблонов сокращается в несколько раз.

В CMS Drupal 8 основной файл, в котором размещался PHP-код логики темы - template.php (Drupal 7), теперь имеет другое название и расширение – название_темы.theme .


DrupalCampCIS'13 Twig -- что за зверь?

Файлы шаблона теперь имеют вид общий вид: тип_шаблона.html.twig (например, page.html.twig, node.html.twig или comment.html.twig) и используют весь синтаксис компилятора Twig.

Так, например, в Drupal 7 в шаблоне page.tpl.php , у нас есть базовый код, который отображает регион блока:

<?php if (!empty($page['preface_first'])): ?> <?php print render($page['preface_first']); ?> <?php endif; ?>

С Twig в Drupal 8, общий вид шаблона page.html.twig шаблона теперь имеет такой вид:

{% if page.preface_first %} {{ page.preface_first }} {% endif %}

Как вы видите, теперь мы не должны использовать файлы с расширением .tpl.php, все файлы шаблонов должны быть переименованы в соответствующий формат с расширением .html.twig.  Кроме того Twig значительно упрощает способ отображения переменных. Так, переменные print render($page['some_var']) или print render($content['some_var']) , имеют упрощенный вид {{ page.some_var }} {{ content.some_var }} или просто simply {{ some_var }} в зависимости от использования функции.

Таким образом, мы имеем следующие ключевые изменения темизации для перехода из Drupal 7 в Drupal 8:

rss