Создание темы оформления состоит из нескольких простых, обязательных шагов — создание папки для темы и файла *.info.yml с описанием темы. Данный процесс похож на создание собственного модуля, с некоторыми особенностями для темы.
¶Придумываем название
Первым делом необходимо придумать название будущей темы оформления. Оно будет использовано Drupal, для того чтобы взаимодействовать с вашей темой оформления. Для именования темы оформления есть определенные правила, которые нельзя нарушать:
- Название должно начинаться с буквы.
- Может содержать только латинские символы в нижнем регистре и нижнее подчеркивание.
- Не может содержать никаких пробелов.
- Не может называться одним из зарезервированных имён:
src
,lib
,vendor
,assets
,css
,files
,images
,js
,misc
,templates
,includes
,fixtures
,drupal
. - Не может называться также, как модули или темы, поставляемые ядром.
¶Создание папки
После того как придумали название темы оформления, вам нужно создать папку с данным именем в /themes/custom/my_theme_name, либо в /themes/my_theme_name.
¶Создание *.info.yml файла
В созданной папке, вам необходимо добавить *.info.yml файл, в котором описывается тема. В качестве название файла вы должны использовать машинное имя темы. Например, если вы создали папку my_theme_name, то файл должен называться my_theme_name.info.yml.
Пример содержимого файла:
name: My awesome theme
type: theme
description: 'A cuddly theme that offers extra fluffiness.'
core: 8.x
libraries:
- my_theme_name/global-styling
base theme: classy
regions:
header: Header
content: Content
sidebar_first: 'Sidebar first'
footer: Footer
¶Структура *.info.yml файла
-
name: Название темы оформления, отображаемое в административном интерфейсе. Например
name: My awesome theme
. -
type: Тип "расширения" друпал. Может принимать одно из следующих значений: module, theme, profile. В случае тем оформления, обязательно указывать "theme". Например
type: theme
. -
core: Версия ядра, для которой предназначена данная тема оформления. Для Drupal 8 это
8.x
. Напримерcore: 8.x
. -
description: (опционально) Описание темы оформления, отображаемое на странице списка тем под названием. Например
description: The theme for my website!
. -
package: (опционально) Название группы, в которой необходимо расположить тему в административном интерфейсе. По умолчанию все темы получают значение
Custom
, вы можете указывать собственное название. Напримерpackage: Project name
. Название группы обрабатываетсяt()
, это означает, что строка будет переводимой и необходимо использовать только латинские названия. - php: (опционально) Указание минимальной версии PHP необходимой для работы модуля. Пользователи не смогут включить модуль, если версия, на которой работает сайт, не удовлетворяет данному требованию.
- libraries: (опционально) Список библиотек, которые необходимо добавлять на всех страницах темы. Аккуратно используйте данное значение. Подключать все и сразу может серьезно сказаться на производительности.
- libraries-override: (опционально) Позволяет переопределить библиотеки или специфичные для неё файлы, или выключить их работу.
- libraries-extend: (опционально) Позволяет указать какие библиотеки необходимо подключать, если на странице появилась определенная библиотека.
-
base theme: (обязательно, начиная с Drupal 8.8.0) Позволяет указать название базовой темы, от которой будет наследоваться ваша тема. Если вы не загрузили необходимую базовую тему, рекомендуется использовать одну из стандартных:
classy
илиstable
. Вы можете полностью отключить наследование указавfalse
. Если вы до конца не понимаете данный параметр, пропустите его и продолжайте со значением по умолчанию -stable
. -
hidden: (опционально) По умолчанию значение
false
, указавtrue
, модуль не будет отображаться в списке тем оформления. Например, это хорошее решение для тем оформления с тестами или стартовых наборов тем, которые не предназначены для использования. Вы можете указать$settings['extension_discovery_scan_tests'] = TRUE
в settings.php чтобы они начали отображаться. -
engine: (опционально) Позволяет задать какой шаблонизатор использовать для данной темы. По умолчанию все темы имеют значение равное
twig
и указывать ничего не нужно. Прежде чем менять данный параметр, убедитесь что указанный вами шаблонизатор объявлен в Drupal. -
logo: (опционально) Путь до логотипа, относительно корня темы (*.info.yml). По умолчанию Drupal ищет logo.svg, но вы можете поменять это значение, например, если хотите чтобы он использовал png логотип:
logo: images/logo.png
. - screenshot: (опционально) Путь до скриншота, относительно корня темы (*.info.yml). По умолчанию Drupal попробует загрузить файл screenshot.png из корня темы. Вы можете подготовить свой файл, он должен быть в размере 588х438px. Данный скриншот показывается на странице тем оформления.
-
regions: (опционально) Список регионов темы оформления. Если вы решили задать данное значение, вы обязательно должны объявить регион content. Регионы задаются в формате
region_key: Region label
. - regions_hidden: (опционально) Список машинных имён регионов, которые необходимо удалить, если вы не указали regions и они унаследовались от base theme.
-
features: (опционально) Список настроек, которые будут доступны в форме настройки темы. Доступные значения по умолчанию:
comment_user_verification
,comment_user_picture
,favicon
,logo
,node_user_picture
. - ckeditor_stylesheets: (опционально) Список CSS файлов, которые необходимо добавить к фрейму CKEdtior.
- experimental: (опционально, добавлено в Drupal 8.8.0) Помечает тему как "экспериментальная". Для таких тем будет добавлено уведомление, как у модулей, предупреждающих о возможных проблемах.
-
dependencies: (опционально, добавлено в Drupal 8.9.0) Список модулей, от которых зависит данная тема оформления. Название зависимостей должно быть в формате
{project}:{module}
, где{project}
название проекта на drupal.org (например drupal.org/project/views - views) и{module}
машинное название модуля. Вы также можете указать каждой зависимости ограничения по версии, напримерyandex_yml:yandex_yml (>=8.x-1.x)
. -
Запрещенные для использования: Данные файлы могут также содержать
version
иproject
. Данные значения добавляются в файл автоматически drupal.org, если вы публикуете модуль как полноценный проект. Для избежания проблем, не задавайте данные значение вручную.
¶Изменения в релизах
-
Drupal 8.7.8 (02.10.2019): Добавлена поддержка
core_version_requirement
в.info.yml
. -
Drupal 8.8.0 (04.12.2019): Параметр
base theme
.info.yml
файла теперь обязателен для заполнения. -
Drupal 8.8.0 (04.12.2019): Добавлен опциональный параметр
experimental
в.info.yml
. -
Drupal 8.9.0 (03.06.2020): Добавлен опциональный параметр
dependencies
в.info.yml
.
¶Ссылки
- Defining a theme with an .info.yml file (англ.), drupal.org
- Разработка тем оформления для Drupal 8, I am droid, 2017