Темизация и twig в drupal 8

43
Темизация и Twig в Drupal 8 Николай Шаповалов Drupal Meetup #7 21 ноября, Санкт-Петербург

Upload: drupalspb

Post on 15-Apr-2017

2.072 views

Category:

Software


14 download

TRANSCRIPT

Page 1: Темизация и Twig в Drupal 8

Темизация и Twigв Drupal 8

Николай ШаповаловDrupal Meetup #7

21 ноября, Санкт-Петербург

Page 2: Темизация и Twig в Drupal 8

Темизация в Drupal 7

2

Page 3: Темизация и Twig в Drupal 8

Новые возможности в Drupal 8 из коробки

Разметка HTML 5 (теги header, nav, article).

Поддержка людей с физическими ограничениями (WAI-ARIA).

Отказ от поддержки старых браузеров (IE 8 и младше, Android 2.3).

Адаптивность, Поддержка мобильных устройств.

3

Page 4: Темизация и Twig в Drupal 8

Адаптивные возможности

Breakpoints (контрольные точки)

Темы

Панель управления (toolbar)

Картинки

Таблицы

4

Page 5: Темизация и Twig в Drupal 8

Изменения в CSS

SMACSS

БЕМ

CSS3 псевдо селекторы

Media query

меньшее кол-во ID

5

Page 6: Темизация и Twig в Drupal 8

Изменения в JS

jQuery 2.x

Modernizr

Underscore.js

Backbone.js

6

Page 7: Темизация и Twig в Drupal 8

Новые возможности темизации

Механизм наследование тем.

Тема может переопределять все шаблоны, CSS и JS.

7

Page 8: Темизация и Twig в Drupal 8

Изменения в темизации

8

Удален hook_page_alter()

Удалены все функции process_*

Удалены все функции theme_*

… и заменены шаблонами *.html.twig

Ядерные темы лежат в /core/themes/

Кастомные темы лежат /themes/

Page 9: Темизация и Twig в Drupal 8

Рендер массивы вместо theme()

Drupal 7

9

Drupal 8

Page 10: Темизация и Twig в Drupal 8

Темизация в Drupal 8

10

Page 11: Темизация и Twig в Drupal 8

11

Преимущества

• Никакого PHP в шаблонах!

• Верстальщику не надо знать PHP.

• Можно использовать один шаблон многократно (include).

• Простой в изучении синтаксис Twig.

• Автоматическое экранирование.

Недостатки

• Новый язык для изучения.

• Обновления Twig после заморозки кода.

Twig

Page 12: Темизация и Twig в Drupal 8

Как работать с Twig?

12

Page 13: Темизация и Twig в Drupal 8

Операторы в Twig

13

{{ ... }} - вывод на экран

{% ... %} - логические выражения

{# ... #} - комментарии

Page 14: Темизация и Twig в Drupal 8

Комментарии

14

Page 15: Темизация и Twig в Drupal 8

Вывод простых переменных

core/themes/bartik/templates/comment.html.twig

15

Page 16: Темизация и Twig в Drupal 8

Вывод сложных переменных

core/themes/bartik/templates/comment.html.twig

Twig

PHP

16

Page 17: Темизация и Twig в Drupal 8

Фильтры в Twig

/core/themes/bartik/templates/comment.html.twig

17

{{ value|t }}

{{ value|trans }}

{{ value|passthrough }}

{{ value|placeholder }}

{{ value|drupal_escape }}

{{ value|safe_join }}

{{ value|without }}

{{ value|clean_class }}

{{ value|clean_id }}

{{ value|render }}

Page 18: Темизация и Twig в Drupal 8

Фильтр drupal_escape

18

Hello my name is <strong>Nikolay</strong>!

Page 19: Темизация и Twig в Drupal 8

Фильтр raw

19

Hello my name is Nikolay!

Page 20: Темизация и Twig в Drupal 8

Переводы

20

Page 21: Темизация и Twig в Drupal 8

Формат plural (Перевод в зависимости от числа)

21

Page 22: Темизация и Twig в Drupal 8

Вывод переменных со знаком #

PHP

Twig

22

Page 23: Темизация и Twig в Drupal 8

Присваивание переменных

23

Page 24: Темизация и Twig в Drupal 8

Перебор пустых массивов

24

Page 25: Темизация и Twig в Drupal 8

Вывести все доступные переменные

1. Включаем отладку Twig.

25

Page 26: Темизация и Twig в Drupal 8

Стандартные темы

ЯДРО DRUPAL 8

CLASSY

SEVEN BARTIK

STABLE STARK

26

Page 27: Темизация и Twig в Drupal 8

Classy

Базовая тема для Bartik и Stark.

Новый дом для стандартных Drupal CSS классов.

Stable

Тема с минимальным набором стилей и разметки, которая необходима для функционирования стандартного Drupal интерфейса.

27

Page 28: Темизация и Twig в Drupal 8

Classy

Stable

28

Page 29: Темизация и Twig в Drupal 8

Изменения в CSS классах

D7

1. .menu li.expanded2. .menu li.collapsed3. .menu li.active-trail4. .menu li.first5. .menu li.last

D8

1. .menu-item--expanded2. .menu-item--collapsed3. .menu-item--active-trail4. .menu-item:first-child5. .menu-item:last-child

29

Page 30: Темизация и Twig в Drupal 8

Bartik

Стандартная тема

Полностью адаптивная

base theme: classy

Стандартная административная тема

base theme: classy

Seven

30

Page 31: Темизация и Twig в Drupal 8

Создание темы

У разработчиков и дизайнеров теперь есть выбор:Наследовать Classy, чтобы получить стандартные классы.Наследовать Stable, чтобы иметь только базовую разметку.Начать с чистого листа.

Достаточно указать в файле ТЕМА.info.ymlbase theme: classybase theme: stablebase theme: false

31

Page 32: Темизация и Twig в Drupal 8

Stark

Тестовая тема.

В теме нет своих CSS стилей и JS скриптов.

Тема, демонстрирует html разметку и css стили ядра Drupal 8.

32

Page 33: Темизация и Twig в Drupal 8

Как внести изменения в существующие темы?

33

Page 34: Темизация и Twig в Drupal 8

Темизируем Bartik

34

Page 35: Темизация и Twig в Drupal 8

Темизируем Bartik. Создание темы.

1.В папке /themes/ создать папку /themes/meetup/

2.Создать файл meetup.info.yml.

35

Page 36: Темизация и Twig в Drupal 8

Темизируем Bartik. Поиск нужного шаблона.

1. Ищем шаблон в

a./core/themes/bartik/templates/

b./core/themes/classy/templates/

2. Переносим найденый шаблон в

a./themes/meetup/templates/

36

Page 37: Темизация и Twig в Drupal 8

Темизируем Bartik. Поиск нужного шаблона.

/core/themes/bartik/templates/node.html.twig

37

Page 38: Темизация и Twig в Drupal 8

Темизируем Bartik. Поиск нужного шаблона.

/themes/meetup/templates/node.html.twig

38

Page 39: Темизация и Twig в Drupal 8

Темизируем Bartik

39

Page 40: Темизация и Twig в Drupal 8

Темизируем Bartik. Результат.

40

Page 41: Темизация и Twig в Drupal 8

Изменяем название шаблона.

1.node--nodeid--viewmode.html.twig

2.node--nodeid.html.twig

3.node--type--viewmode.html.twig

4.node--type.html.twig

5.node--viewmode.html.twig

6.node.html.twig

41

Page 42: Темизация и Twig в Drupal 8

Изменяем название шаблона.

node.html.twig

node--article--teaser.html.twig

42

Page 43: Темизация и Twig в Drupal 8

Ссылки

DrupalCon Barcelona 2015: Mastering TwigCSS Coding standardsJavascript Coding standardsTwig Coding standardsA Tale of Two Base Themes in Drupal 8 coreTheming differences between Drupal 6, 7 & 8Theme system overview

43

Спонсоры

Докладчик

Николай Шаповаловhttps://zniki.ru/contact