Темизация Drupal 7. Обзор файлов темы (шаблона)

Темизация Drupal 7. Обзор файлов темы (шаблона)

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

Тема представляет из себя набор файлов, которые определяют уровень представления (внешнего вида) сайта. К каждой теме вы можете создать одну или несколько подтем (саб-тем). Для того, чтобы Друпал обнаружил вашу тему, достаточно лишь наличия .info файла (файл с описанием темы), однако в таком случае пользы от вашей темы будет немного :)

Ниже приведён рисунок, который отражает "анатомию" темы в Друпале. Обратите внимание на цвет перед именем шаблона и цвет на макете сайта: наглядно показано какой шаблон за какую часть сайта отвечает. Например, html.tpl.php включает в себя разметку полной html страницы (DOCTYPE, <head>, <body>), а page.tpl.php отвечает за вывод содержимого (внутри тэга <body>). На рисунке показана тема с названием example.

theme7_anatomy.png
.info файл (обязателен)

Как я уже говорил - всё, что нужно Друпалу, чтобы найти тему - это .info файл. Здесь могут быть описаны файлы стилей (css), javascript, метаданные, блоки. Именно могут быть описаны, но не являются обязательными. О том, что является в .info файле обязательным для заполнения, я расскажу в следующей статье.

Этот файл описывает имя темы, которое будет видно при работе с сайтом, а так же имя файла, которое будет использоваться для вызова функций темы (опять же - об этом чуть позже). Например, если .info файл назвать themename.info, а внутри файл указать name = Theme Name, то на сайте эта тема будет названа именно Theme Name, но в качестве имени темы для функций должно использоваться themename.
Файлы шаблонов (.tpl.php)

Эти шаблоны используются для (X)HTML разметки и вывода PHP переменных. В некоторых случаях они могут использоваться для вывода других типов данных, например, XML или RSS. Каждый файл.tpl.php управляет выводом определённой части (темизируемых) данных. В некоторых случаях шаблоны могут перекрывать друг друга при помощи системы возможных вариантов отображения данных (suggestions).

Присутствие каждого файла шаблона в теме необязательно. Отсутствие шаблона приведёт лишь к использованию его стандартного прототипа из ядра Drupal 7. Огромная просьба - никогда не пишите в этих файлах объёмные фрагменты php кода. Для этого есть template.php. Файлы шаблонов должны оставаться лишь файлами шаблонов, а никак не слоем для реализации какой-либо логики.

Для того, чтобы Drupal понял, что необходимо использовать шаблон из темы, а не из ядра, достаточно скопировать его в корень темы и сбросить кэш регистра темы. В этом может помочь Drush либо Admin menu. Если не хотите разбираться с дополнительным функционалом - просто очистите кэш всего сайта.

Вообще, кэш регистра темы необходимо очищать в следующих ситуациях:

При добавлении новых функций Друпала в template.php
При изменении файла .info
При добавлении/удалении шаблонов .tpl.php

template.php

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

Неважно, что именно вы пишете - свои функции, или перекрываете функции темы - всё это должно находиться в template.php. Файл начинается с открывающегося тэга <?php. Однако использовать закрывающий тэг ?> не рекомендуется по причинам возможных ошибок php.
Подтемы (саб-темы)

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

Обычно в теме присутствуют логотип, скриншот и фавиконка. Эти графические элементы не являются обязательными, но очень рекомендуются для добавления в тему, особенно, если эта тема выкладывается на drupal.org. Скриншот показыватся при выборе темы, и является крайне удобным для наглядного ориентирования между ними. Из личного опыта добавлю, что сайты без фавиконки некоторыми людьми не признаются качественно сделанными, какой бы суперфункционал они не имели.
В теме может находиться файл theme-settings.php, который используется программистами для добавления дополнительных настроек темы. Например, отличный пример добавления настроек можно посмотреть в теме Pixture Reloaded на странице /admin/appearance/settings/pixture_reloaded

Теги: 

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.