Вы здесь

Создание темы

Темизация Drupal 7

Темизация Drupal 7

Друпал обладает достаточной мощью и гибкостью для того, чтобы вы могли сделать тему любой сложности. Система даёт бесчисленные способы решения возникающих вопросов, но вы должны знать как Друпал работает с темами, чтобы быть в состоянии выбрать оптимальный вариант. Зная принципы создания тем, вы можете минимизировать свой код и облегчить последующее обслуживание.

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

  • HTML и CSS
  • JavaScript и jQuery (если вы будете делать тему с поддержкой этих скриптов)
  • PHP (это не является необходимым, но во многих ситуациях знание PHP поможет вам лучше понимать о чём идёт речь)
  • Терминологии Друпала

Старайтесь при разработке темы придерживаться стандартов кодирования — это позволит сохранить чистоту кода темы. Перед созданием темы, вам нужно представлять цели и возможности сайта, для которых вы делаете тему. Зная определённые требования значительно легче разрабатывать новую тему, чем проектируя её, исходя из общих представлений.


Это руководство содержит информацию о работе с темами в Друпале 7. Стандартные темы и их шаблоны в Друпале 7 размещены в своих папках и подпапках общей папки themes, для дополнительных тем используется папка DRUPAL_ROOT/sites/all/themes.


Для изменения существующий темы, создайте в папке sites/all/themes папку для новой темы и скопируйте в неё все файлы той темы которую нужно изменить.

Системное название темы соответствует названию .info-файла. Например, если файл называется drop.info, то Друпал будет считать, что системное название темы это drop.

Когда создаётся новая тема, её системное название не должно совпадать с системным названием другого проекта, так как названия модулей и тем используются в названиях функций, а использование функций с одинаковыми названиями может вызвать конфликты.


Друпал 5 и более ранние версии в качестве системного названия использовали название папки темы, а не название файла.

Движок PHPTemplate

Стандартным движком тем в Друпале 7 является PHPTemplate. Он написан Adrian Rossouw и использует в качестве шаблонов файлы something.tpl.php, которые позволяют управлять функциями theme_something(). Документацию по функциям оформления можно найти в Drupal API. Каждый файл состоит из HTML-скелета с включением PHP-сниппетов, которые генерируют необходимую информацию.


Даже если вы не знаете PHP, то всё равно сможете создавать свои темы, так как в них используются простые сниппеты, которые можно просто скопировать в свои шаблоны из других тем.

Логика условий и предобработка данных (template.php)

Для всей логики условий и обработки выводимых данных используется файл template.php располагающийся в папке темы. Он не является обязательным, но позволяет сохранить .tpl.php-файлы чистыми и может использоваться для предобработки переменных до того, как они будут использованы в разметке .tpl.php-файлов. В этом файле хорошо делать свои функции, переопределения стандартных функций темизации или какую-либо другую предобработку выводимых данных.

Этот файл должен начинаться с отрывающего PHP-тега <?php, а закрывающий тег рекомендуется опустить.

Структура генерируемой страницы

  • Страница — на странице находятся регионы
  • Регион — в регионах размещаются блоки
  • Блок — в блоках показываются данные

Иллюстрация ниже показывает структуру страницы в Друпале и файлы, которые используются в типичной теме и подтеме.

Анатомия темы Друпала 7

Стандартные файлы темы

.info-файл: определение темы

Всё, что нужно Друпалу для того, чтобы увидеть тему, это .info-файл. Если нужно, здесь могут быть определены метаданные, стили, скрипты, регионы и другие параметры.


В Друпале 5 .info-файлы использовались только в модулях. .info-файлы для тем были введены в Друпале 6.

.tpl.php-файлы: шаблоны выводимых данных

Файлы шаблонов используются для HTML-разметки и переменных PHP. Каждый .tpl.php-файл обрабатывает вывод определённой части данных темы, а в некоторых ситуациях он может служить обёрткой для нескольких .tpl.php-файлов (например profile-wrapper.tpl.php). Эти файлы не являются обязательными и если в вашей теме их нет, то будут использоваться стандартные шаблоны.

Воздержитесь от использования в этих файлах сложной логики. В большинстве случаев это должны быть только элементы HTML задающие скелет страницы и переменные PHP выводящие данные в этих элементах (используйте для предобработки файл template.php).

Эти файлы должен начинаться с отрывающего PHP-тега <?php, а закрывающий тег рекомендуется опустить.

.css-файлы: стили оформления

...

.js-файлы: скрипты взаимодействия

...

Базовая темы и её подтемы

Подтемы ведут себя как и любая другая тема, единственное отличие заключается в том, что они наследуют ресурсы своей базовой темы. Для создания подтемы в .info-файле подтемы нужна запись base theme, которая определяет базовую тему, от которой будут наследоваться ресурсы.


Друпал 5 и ранние версии требовали размещения подтемы внутри папки базовой темы. Сейчас это не так. Друпал 7 использует реестр тем, данные о темах берутся из него и подтема не обязательно должна располагаться в папке базовой темы.

Рекомендации по созданию темы

При создании темы и использовании темы, учитывайте следующие моменты:

  • Сделайте для темы логотип и скриншота. Скриншот показывается на странице «Оформление» и помогает визуально отличать темы друг от друга
  • Если вы используете на сайте стандартную тему, но хотите внести в неё небольшие изменения, создайте на её базе подтему в папке дополнительных тем. Прямое изменение стандартных тем не рекомендуется, потому что они используются в процессе установки и обновления (собственные переменные могут быть несовместимы с ядром) и они могут быть случайно вами перезаписаны при обновлении сайта
  • Чтобы использовать в теме дополнительные возможности помимо логотипа, поиска, миссии и так далее, используйте файл theme-settings.php, данные которого будут показываться на странице настройки темы
  • Для использования в теме возможностей модуля Color, в папке темы нужна папка color вместе с файлом color.inc и другими дополнительными файлами