Theming/Render Flashcards
Что такое “тема”? Как используется?
- Набор файлов, определяющий внешний вид сайта.
- Устанавливается composer require THEMENAME
Включаются drush en THEMENAME
Drupal, по умолчанию, поддерживает две темы на выбор: административную — использующихся на всех административных страницах и по умолчанию - используемую на всех остальных страницах сайта.
a. Чем она отличается от модуля?
Модуль отвечает за контент. Тема оформления определяет как HTML и CSS стили сайта обернут ваш контент.
b. Какая базовая структура темы?
*.info.yml
Тема оформления должна содержать файл описывающий данную тему для Drupal. Это единственный обязательный файл для тем оформления.
*.libraries.yml
Файл .libraries.yml используется для объявления ассетов темы оформления, которые могут быть как JavaScript, так и CSS файлами. В теме объявляются библиотеки, необходимые для данной темы оформления.
*.breakpoints.yml
В данном файле вы можете описывать контрольные точки (breakpoints) для адаптивного дизайна.
*.theme
Файл .theme является PHP файлом, который может содержать различную логику. Например препроцессинг шаблонов, или расширять настройки темы оформления.
logo.svg
Логотип, который будет использоваться по умолчанию как логотип сайта.
templates/
Папка, содержащая в себе все необходимые темплейты с HTML разметкой. Темплейты должны находиться в этой папке, а папка может иметь неограниченное кол-во вложенных с любым другим названием.
i. Компонентный подход
Верстка разбивается на многократно использующиеся элементы, и у каждого такого элемента есть свой twig шаблон, стили и т.д. И мы можем использовать существующие шаблоны Drupal, чтобы указать на наши шаблоны компонентов с помощью тега include.
Оператор «with» добавляет к включению определенные переменные. «only» в конце тега включения ограничивает переменные, к которым можно получить доступ из включенного файла.
Использование «только» предотвращает доступ шаблона компонента ко всем переменным, доступным в шаблоне страницы. Это полезно, чтобы избежать конфликтов пространства имен переменных.
c. Как можно отнаследовать тему?
base_theme в инфо файле
- Что такое регион? Как они используются?
- Регион - область страницы, внутри которой располагаются блоки
- Для того чтобы у вас появился новый регион, через который вы сможете выводить блоки, вам нужно:
• Добавить данные о регионе в файл theme.info.yml
• Отредактировать page.html.twig, добавив в него вывод нового региона
a. Как создать свой?
• Добавить данные о регионе в файл theme.info.yml
• Отредактировать page.html.twig, добавив в него вывод нового региона
Все регионы объединены ключем regions
- Что делает hook_theme?
Определяют, как должны отображаться данные определенного типа.
- Каким образом можно затемить данные (3 способа)?
a. ViewBuilder для сущностей
b. Theme-функции
c. Theme-шаблоны
i. Как его можно переопределить? Какие есть стандарты именования шаблонов?
a. View builder - этот обработчик предоставляет класс, который будет обрабатывать вывод сущности при просмотре конечным пользователем. Например, при посещении узла на сайте Drupal 8 вывод сущности обрабатывается классом NodeViewBuilder.
Пример: “view_builder” = “Drupal\node\NodeViewBuilder”,
b. Функция theme () была удалена в Drupal 8. Итак, вам нужно создать renderable array для темизации элемента. Это массив данных, который затем передается в функцию render ().
c.добавив в папку вашей темы шаблоны, которые соответствуют определенному соглашению об именах.
hook_theme_suggestions_HOOK(array $variables)
hook_theme_suggestions_alter(array &$suggestions, array $variables, $hook)
hook_theme_suggestions_HOOK_alter(array &$suggestions, array $variables)
- Что такое RendereableArray (RenderArray)? Как он используется? Зачем он нужен?
Rendarrable Array - структурированное представление данных для темизации (рендера)
Нужен чтобы была возможность отредактировать представление перед рендером.
Передается в качестве параметра в функцию рендера
- Что такое Markup? Как он используется? Зачем он нужен?
определяет объект, который передает безопасные строки через систему рендеринга.
- Что такое twig? Каковы его возможности?
- Шаблонизатор Twig - компилирующий обработчик шаблонов
Все Twig шаблоны в Drupal 8 компилируются в php файлы и хранятся в каталоге sites/default/files/php/twig/. Файлы шаблонов при этом кешируются для повторного использования и хранятся в файловой системе для улучшения производительности, перекомпилируются только при очистке Twig кеша.
Все шаблоны в модулях и темах должны находиться в каталоге /templates. - Поддерживает:
Работу с массивами и переменными, циклы, условия, фильтры, экранирование, наследование шаблонов(Можем определять блоки внутри шаблона, а потом в наследуя от этого шаблона другой, переопределять эти блоки.)
a. Как передать в него переменную?
через hook_theme или в препроцессе
i. Как можно подключить другой шаблон внутри текущего?
{% include ‘sub_template.html.twig’ %}
b. Twig namespaces, что это такое и как их использовать?
Логические имена, которые группируют несколько шаблонов и не связанны с их фактическим расположением.
Ядро Drupal регистрирует пространство имен по умолчанию для каждого модуля и темы.
Вот как можно зарегистрировать пространство имен myLib, находящуюся в каталоге myLibFiles вашей темы или модуля. Добавьте в свой файл .info.yml следующие строки::
components:
namespaces:
myLib: myLibFiles
{% include ‘@myLib/includes/header.html.twig’ %}