Создание темы оформления состоит из нескольких простых, обязательных шагов — создание папки для темы и файла *.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