Механизм дочерних тем (подтем).

Кто собирал темы на основе zen видели, что собственная тема является "дочерней темой" (sub-theme) темы zen. Для краткости я буду в тексте использовать термин "подтема". Что же такое "подтема" в drupal 6?
Подтема - это обычная тема drupal, за исключением одного отличия: она наследует ресурсы родителя. Подтема может быть подтемой другой подтемы, как это изображено на рисунке:

механизм ветвления

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

Для определения родителя, "base theme", обозначьте это в .info файле вашей подтемы:

base theme = themeName

Где themeName - имя родительской темы (к примеру zen, или ninesixty).

Где должна располагаться подтема? В любом месте пространства тем drupal, или внутри папки родительской темы:
/sites/all/themes/моя-подтема
/sites/all/themes/ninesixty/моя-подтема.

Рекомендуют использовать для расположения папку родительской темы, для большего порядка в файловой системе, если вы будете плодить много родителей и много подтем.

Что наследуется?

Какие же ресурсы темы-родителя наследуются вашей подтемой?

  • Все стили (css-файлы). Важно: для наследования стилей родительской темы, вы должны определить хотя бы один файл стилей в дочерней теме. Порядок вывода стилей в html будет таков: стили друпала -> стили базовой темы -> стили дочерней темы. Если drupal у вас есть два style.css файла в папке темы и подтемы, используется style.css подтемы.
  • Все javascript-файлы
  • Все файлы шаблонов (tpl.php)
  • Все внутренности template.php, в том числе переопределение функций тем, препроцесс-функции и т.п. Каждая подтема может включать собственный template.php файл, который будет работать параллельно с родительским.
  • Скриншот темы

Что не наследуется?

  • logo.png темы
  • Настройки регионов в .info файле. Если вы не используете стандартные регионы, убедитесь что в вашем page.tpl.php и .info файле прописаны нужные вам регионы. Таким образом каждая подтема может иметь свои собственные регионы, что делает механизм темизации очень гибким.
  • Все что находится в theme-settings.php для расширенных настроек темы.
  • Все что касается настроек цвета для модуля Color.

Об авторе

Дубовской Александр

руководитель проектов

+7 928 77 00 850
Email/Jabber: dan@ra-don.ru
Skype: alexander.dubovskoy

Могу сразу предупредить - то что из этого блога попадает на главную страницу - стоит внимания широкого круга читателей. Все остальное в блоге возможно покажется вам слишком узкоспециализированным или ненужным в "бытовом" управлении сайтом.

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

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