Theming/Render Flashcards

1
Q

Что такое “тема”? Как используется?

A
  • Набор файлов, определяющий внешний вид сайта.
  • Устанавливается composer require THEMENAME
    Включаются drush en THEMENAME
    Drupal, по умолчанию, поддерживает две темы на выбор: административную — использующихся на всех административных страницах и по умолчанию - используемую на всех остальных страницах сайта.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

a. Чем она отличается от модуля?

A

Модуль отвечает за контент. Тема оформления определяет как HTML и CSS стили сайта обернут ваш контент.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

b. Какая базовая структура темы?

A

*.info.yml
Тема оформления должна содержать файл описывающий данную тему для Drupal. Это единственный обязательный файл для тем оформления.
*.libraries.yml
Файл .libraries.yml используется для объявления ассетов темы оформления, которые могут быть как JavaScript, так и CSS файлами. В теме объявляются библиотеки, необходимые для данной темы оформления.
*.breakpoints.yml
В данном файле вы можете описывать контрольные точки (breakpoints) для адаптивного дизайна.
*.theme
Файл .theme является PHP файлом, который может содержать различную логику. Например препроцессинг шаблонов, или расширять настройки темы оформления.
logo.svg
Логотип, который будет использоваться по умолчанию как логотип сайта.
templates/
Папка, содержащая в себе все необходимые темплейты с HTML разметкой. Темплейты должны находиться в этой папке, а папка может иметь неограниченное кол-во вложенных с любым другим названием.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

i. Компонентный подход

A

Верстка разбивается на многократно использующиеся элементы, и у каждого такого элемента есть свой twig шаблон, стили и т.д. И мы можем использовать существующие шаблоны Drupal, чтобы указать на наши шаблоны компонентов с помощью тега include.
Оператор «with» добавляет к включению определенные переменные. «only» в конце тега включения ограничивает переменные, к которым можно получить доступ из включенного файла.
Использование «только» предотвращает доступ шаблона компонента ко всем переменным, доступным в шаблоне страницы. Это полезно, чтобы избежать конфликтов пространства имен переменных.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

c. Как можно отнаследовать тему?

A

base_theme в инфо файле

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Что такое регион? Как они используются?
A
  • Регион - область страницы, внутри которой располагаются блоки
  • Для того чтобы у вас появился новый регион, через который вы сможете выводить блоки, вам нужно:
    • Добавить данные о регионе в файл theme.info.yml
    • Отредактировать page.html.twig, добавив в него вывод нового региона
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

a. Как создать свой?

A

• Добавить данные о регионе в файл theme.info.yml
• Отредактировать page.html.twig, добавив в него вывод нового региона
Все регионы объединены ключем regions

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Что делает hook_theme?
A

Определяют, как должны отображаться данные определенного типа.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. Каким образом можно затемить данные (3 способа)?
    a. ViewBuilder для сущностей
    b. Theme-функции
    c. Theme-шаблоны
    i. Как его можно переопределить? Какие есть стандарты именования шаблонов?
A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. Что такое RendereableArray (RenderArray)? Как он используется? Зачем он нужен?
A

Rendarrable Array - структурированное представление данных для темизации (рендера)

Нужен чтобы была возможность отредактировать представление перед рендером.
Передается в качестве параметра в функцию рендера

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. Что такое Markup? Как он используется? Зачем он нужен?
A

определяет объект, который передает безопасные строки через систему рендеринга.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. Что такое twig? Каковы его возможности?
A
  • Шаблонизатор Twig - компилирующий обработчик шаблонов
    Все Twig шаблоны в Drupal 8 компилируются в php файлы и хранятся в каталоге sites/default/files/php/twig/. Файлы шаблонов при этом кешируются для повторного использования и хранятся в файловой системе для улучшения производительности, перекомпилируются только при очистке Twig кеша.
    Все шаблоны в модулях и темах должны находиться в каталоге /templates.
  • Поддерживает:
    Работу с массивами и переменными, циклы, условия, фильтры, экранирование, наследование шаблонов(Можем определять блоки внутри шаблона, а потом в наследуя от этого шаблона другой, переопределять эти блоки.)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

a. Как передать в него переменную?

A

через hook_theme или в препроцессе

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

i. Как можно подключить другой шаблон внутри текущего?

A

{% include ‘sub_template.html.twig’ %}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

b. Twig namespaces, что это такое и как их использовать?

A

Логические имена, которые группируют несколько шаблонов и не связанны с их фактическим расположением.
Ядро Drupal регистрирует пространство имен по умолчанию для каждого модуля и темы.

Вот как можно зарегистрировать пространство имен myLib, находящуюся в каталоге myLibFiles вашей темы или модуля. Добавьте в свой файл .info.yml следующие строки::

components:
namespaces:
myLib: myLibFiles

{% include ‘@myLib/includes/header.html.twig’ %}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. Каким образом можно отобразить путь? А ссылку?
A

Для отображения пути используется класс Url, а ссылки - Link

17
Q
  1. Какие хуки можно использовать для изменения данных перед преобразованием их в html?
A

preprocess хуки

18
Q
  1. Как подключить JS или CSS? Что такое assets library?
A

Создается файл *.libraries.yml(assets library - библиотека js и css файлов, встраиваемая в страницу) в корне темы/модуля.

19
Q

a. Как подключить их глобально, на конкретной странице, для конкретного элемента?

A

Чтобы добавить библиотеку на все страницы сайта, нужно в файле темы *.info.yml прописать параметр libraries с именем библиотеки в формате extension_name/library_name, либо для конкретной страницы render array из метода контроллера или в препроцессе ($output[‘#attached’][‘library’][] = ‘helloworld/helloworld’;) так же используется hook_page_attachments
($attachments[‘#attached’][‘library’][] = ‘helloworld/helloworld’;)
В случае если речь о форме:
$form[‘#attached’][‘library’][]

20
Q

b. Как подключить библиотеку в шаблоне?

A

{{ attach_library(‘fluffiness/cuddly-slider’) }}

21
Q

c. Как переопределить существующую assets library?

A

параметр libraries-override в файле темы *.info.yml