Тема Stark в Drupal 8 – минималистичная базовая тема, лишённая собственных стилей и скриптов. Её основное предназначение – демонстрация работы движка темизации без вмешательства оформления. Создание собственной темы на основе Stark позволяет полностью контролировать структуру шаблонов, стилизацию и поведение без влияния стороннего кода.
Для начала необходимо создать директорию темы в /themes/custom. Название директории должно соответствовать машинному имени темы, например mytheme. Внутри создаются следующие обязательные файлы: mytheme.info.yml – метаинформация темы, mytheme.theme – файл с функциями PHP, и при необходимости – шаблонные файлы .html.twig.
В mytheme.info.yml указывается базовая тема: base theme: stark. Также определяются регионы, путь к библиотекам и зависимости. Пример определения региона: header: ‘Header region’. Без этого Drupal не сможет корректно отобразить блоки в интерфейсе.
Подключение CSS и JavaScript осуществляется через mytheme.libraries.yml. Этот файл создаётся вручную, и в нём указываются пути к файлам ресурсов. Затем библиотеки подключаются в mytheme.info.yml с помощью директивы libraries:.
Темизация реализуется через шаблоны Twig. Файлы размещаются в каталоге templates. Для переопределения, например, узлов, используется файл node—article.html.twig. Все изменения вступают в силу после очистки кеша: drush cr или через интерфейс администратора.
Подготовка структуры директории темы на основе Stark
Создайте директорию темы внутри /themes/custom
, например: /themes/custom/mytheme
. Убедитесь, что путь не содержит пробелов и специальных символов. Название директории должно совпадать с машинным именем темы.
Скопируйте из ядра Drupal базовую структуру темы Stark, расположенную в /core/themes/stark
, в созданную директорию. Обязательно исключите файл stark.info.yml
– его нужно заменить собственным.
Создайте файл mytheme.info.yml
с обязательными ключами: name
, type
, core
, base theme
, libraries
, regions
. Пример значения ключа base theme
: stark
.
Добавьте директории css
, js
, templates
и images
вручную. Они не создаются автоматически. Файлы стилей и скриптов подключаются через .libraries.yml
, который необходимо создать в корне темы: mytheme.libraries.yml
.
Для обеспечения корректной работы темы добавьте файл mytheme.theme
. Он должен содержать, как минимум, открывающий PHP-тег и функцию-хук template_preprocess_HOOK()
, если планируется переопределение шаблонов.
Права на файлы и директории должны быть корректно установлены: 755 для директорий и 644 для файлов, чтобы избежать проблем с доступом при разработке и деплое.
Создание файла.info.yml и его ключевые параметры
Файл stark_custom.info.yml
– основной конфигурационный файл темы. Он обязателен и размещается в корне директории темы /themes/custom/stark_custom/
. Имя файла должно совпадать с системным именем темы.
- name: Человеко-читаемое название темы, отображаемое в административном интерфейсе. Пример:
Stark Custom
- type: Всегда указывается
theme
для пользовательской темы. - description: Краткое описание темы. Используется только в интерфейсе администратора.
- core: Указывает минимально поддерживаемую версию ядра Drupal. Для Drupal 8 –
8.x
. - base theme: Обязательно указывается
stark
для наследования структуры темы Stark. - regions: Определяет именованные области для размещения блоков. Минимальный набор:
header: Header
content: Content
sidebar_first: First Sidebar
footer: Footer
- libraries: Перечень подключаемых библиотек стилей и скриптов. Пример:
stark_custom/global-styling
- libraries-override: При необходимости переопределения библиотек базовой темы.
- regions_hidden: Используется для временного скрытия регионов в интерфейсе.
Минимальный пример корректного .info.yml
:
name: Stark Custom
type: theme
description: 'Кастомная тема на основе Stark'
core: 8.x
base theme: stark
regions:
header: Header
content: Content
sidebar_first: First Sidebar
footer: Footer
libraries:
- stark_custom/global-styling
Подключение стилей и скриптов через libraries.yml
Файл stark.libraries.yml
располагается в корне темы. Он содержит определения библиотек, включающих CSS и JavaScript. Название файла должно совпадать с машинным именем темы.
- Создайте файл
stark.libraries.yml
в каталоге вашей темы, например:themes/custom/stark/stark.libraries.yml
. - Определите библиотеку, указав ключ, например
global-styling
, и подключаемые ресурсы:
global-styling:
version: 1.x
css:
theme:
css/style.css: {}
js:
js/script.js: {}
dependencies:
- core/jquery
css/theme
– для пользовательских стилей темы. Поддерживаются такжеcss/base
,css/component
иcss/layout
для логической организации.js
– путь к JavaScript-файлам. Все пути указываются относительно корня темы.dependencies
– указываются библиотеки ядра или сторонние библиотеки, напримерcore/jquery
,core/drupal
,core/drupalSettings
.
- Чтобы библиотека загружалась на всех страницах, подключите её в
stark.info.yml
:
libraries:
- stark/global-styling
- Для подключения библиотеки на уровне шаблона, используйте Twig-функцию:
{{ attach_library('stark/global-styling') }}
- Очистите кэш после изменений:
drush cr
или через интерфейс администратора.
Нарушение структуры libraries.yml
приведёт к ошибкам парсинга. Используйте отступы в два пробела, не применяйте табуляции.
Определение и настройка шаблонов Twig в теме
В теме на основе Stark шаблоны Twig определяются в директории templates/ внутри папки темы. Для переопределения стандартных шаблонов создайте файлы с соответствующими именами, соответствующими хукам темизации, например: node.html.twig, page.html.twig, block.html.twig.
Drupal использует систему приоритетов для шаблонов. Чтобы переопределить конкретный тип материала, создайте файл node—[type].html.twig, где [type] – машиночитаемое имя типа, например: node—article.html.twig. Аналогично, блок с определённым ID можно переопределить через block—[id].html.twig.
После добавления или изменения шаблонов выполните очистку кеша: drush cr или через интерфейс. Drupal автоматически подхватит новые файлы при наличии соответствующего префикса и структуры.
В шаблонах не следует вызывать PHP-логику. Все переменные должны быть подготовлены в препроцесс-функциях, определяемых в .theme-файле. Например, для page.html.twig – YOURTHEME_preprocess_page(). Используйте функцию kint() из модуля Devel для отладки содержимого переменных.
Не переопределяйте шаблоны без необходимости. Минимизируйте дублирование, структурируйте шаблоны и выносите повторяющиеся блоки в отдельные include-файлы через директиву {% include %}. Это упрощает поддержку темы и ускоряет разработку.
Переопределение шаблонов из базовой темы Stark
Чтобы переопределить шаблоны из темы Stark, необходимо создать собственную дочернюю тему и скопировать нужные шаблоны из системных модулей или темы Stark в папку templates вашей темы.
Например, для изменения шаблона материала (node) найдите оригинальный файл node.html.twig в core/modules/node/templates и скопируйте его в themes/custom/имя_темы/templates/. Изменения в этом файле начнут применяться после очистки кэша.
Имена файлов шаблонов должны соответствовать шаблонам, используемым Drupal, например: page.html.twig, block.html.twig, node—article.html.twig. Чтобы определить, какие шаблоны доступны для переопределения, включите Twig debug в services.yml. Это позволит видеть в HTML-комментариях, какой шаблон используется и откуда загружается.
Путь к файлу services.yml: sites/default/services.yml. Включите отладку, установив:
twig.config:
debug: true
auto_reload: true
cache: false
После этого очистите кэш командой drush cr или через административный интерфейс. Drupal начнёт показывать путь к каждому шаблону, что упростит поиск нужного файла для переопределения.
Изменённые шаблоны будут использоваться только при соблюдении структуры каталога и корректных названий файлов. Убедитесь, что в файле .info.yml вашей темы указан путь к папке с шаблонами:
templates:
- templates
Если шаблон не применяется, проверьте кэш, конфигурацию debug и имена шаблонов. Используйте функцию hook_theme_suggestions_HOOK_alter() для добавления пользовательских шаблонов в случае необходимости расширения логики выбора шаблонов.
Настройка скриншота и описания темы для интерфейса
Для того чтобы тема стала видимой в интерфейсе Drupal, необходимо правильно настроить файл theme.yml
и обеспечить наличие изображения скриншота. Скриншот представляет собой предварительный просмотр, который будет отображаться в админке при выборе темы. Описание темы позволяет дать пользователю информацию о функционале и особенностях оформления темы.
Для добавления скриншота темы в Drupal 8 нужно разместить изображение в корневой папке темы. По умолчанию система ожидает файл с названием screenshot.png
. Он должен быть размером 880×660 пикселей. Это оптимальные размеры для отображения в интерфейсе без искажений.
После того как изображение скриншота готово, убедитесь, что файл theme.yml
включает правильную информацию о нем. В нем необходимо указать путь к изображению:
name: my_theme
type: theme
core: 8.x
base theme: stable
description: 'Моя кастомная тема для Drupal 8'
package: Custom
screenshot: screenshot.png
Поле screenshot
указывает путь к изображению в директории темы. Это поле является обязательным для корректной работы интерфейса выбора темы в админке.
Описание темы в файле theme.yml
не только помогает пользователям понять, что они установили, но и предоставляет информацию о ее особенностях. Описание отображается в административной панели при выборе темы и должно быть информативным, кратким и точным. В поле description
можно указать основные особенности и назначения темы. Рекомендуется избегать длинных текстов, лучше выделить ключевые моменты.
Кроме того, полезно добавить информацию о том, для каких версий Drupal подходит эта тема, а также дополнительные сведения о требованиях, таких как версии PHP или других модулей, необходимых для правильной работы темы.
Активация и отладка кастомной темы через интерфейс Drupal
Для активации кастомной темы в Drupal 8 перейдите в раздел «Конфигурация» -> «Темы» в административном интерфейсе. Здесь отображаются все доступные темы, включая те, которые были добавлены вручную. Найдите свою тему Stark в списке и нажмите кнопку «Активировать». Важно, чтобы тема была размещена в каталоге themes/custom или themes/contrib в зависимости от того, где вы храните свой проект. После активации, перезагрузите сайт, чтобы изменения вступили в силу.
Для отладки темы используйте встроенные инструменты Drupal. Включите режим разработки, активировав «Development modules» в разделе «Модули» и включив модуль «Twig Debug». Этот модуль позволяет вам видеть информацию о файлах шаблонов, которые Drupal использует для рендеринга текущей страницы, что значительно упрощает процесс отладки.
Особое внимание стоит уделить кешированию. Отключите кэширование страниц в процессе разработки, чтобы сразу видеть изменения в теме. Для этого перейдите в «Конфигурация» -> «Производительность» и временно отключите кэширование страниц. После завершения отладки не забудьте вернуть настройки в прежнее состояние для улучшения производительности сайта.
При разработке и отладке кастомной темы также полезно использовать инструмент «Theme Developer» для анализа структуры файлов и определения того, какие стили и скрипты применяются к элементам страницы. Убедитесь, что ваша тема использует правильные шаблоны для каждого компонента сайта, и проверьте соответствие с рекомендациями по разработке в документации Drupal.
Вопрос-ответ:
Как создать тему Stark на Drupal 8 вручную?
Для того чтобы создать тему Stark на Drupal 8 вручную, нужно сначала подготовить структуру каталогов и файлов для новой темы. Это включает создание папки в каталоге /themes/custom/, добавление файлов .info.yml, .libraries.yml, а также создание необходимых шаблонов и стилей CSS. Далее следует настроить файл .info.yml, чтобы указать зависимости и метаданные темы. После этого можно добавить нужные ресурсы, такие как изображения и шрифты. Для финальной настройки необходимо активировать тему через административную панель Drupal и протестировать её работу на сайте.
Что такое файл .info.yml в теме Drupal 8 и как его настроить?
Файл .info.yml в теме Drupal 8 описывает параметры и метаданные темы, такие как её название, описание, зависимости, а также какие стили и скрипты будут подключены. Для настройки этого файла нужно указать название темы, путь к шаблонам и другие важные элементы, такие как шаблоны для блоков и страниц. Пример структуры .info.yml: название темы, описание, путь к файлам CSS и JS, зависимость от других модулей или тем, и так далее. Этот файл является основой, без которого тема не будет работать корректно.
Нужно ли использовать шаблоны в теме Stark для Drupal 8?
Да, шаблоны необходимы для настройки внешнего вида страницы и её элементов. В Drupal 8 используются файлы Twig для шаблонов. Каждый компонент сайта, такой как страницы, блоки и меню, может быть настроен с помощью соответствующих шаблонов. Для темы Stark нужно будет создать или настроить шаблоны, например, для отображения узлов или блоков. Шаблоны Twig предоставляют гибкость и возможность кастомизировать HTML-вывод без необходимости редактировать сам код ядра Drupal.
Как активировать тему Stark в Drupal 8 после её создания?
После того как тема Stark создана и все файлы настроены, её необходимо активировать через административную панель Drupal. Для этого зайдите в раздел «Внешний вид» (Appearance), найдите свою тему в списке доступных и нажмите кнопку «Активировать». Если тема настроена правильно, она сразу станет доступной на сайте. После активации темы можно дополнительно настроить её параметры, такие как выбор логотипа, цветовую схему или оформление меню, в зависимости от того, какие возможности предоставляются в настройках темы.