Вы здесь

Часть первая. Анатомия темы Drupal 6

Тема — это несколько файлов определяющих как будет выглядеть ваш сайт. Вы так же можете  создать «под-тему» или другой вариант готовой темы. Необходимым является только файл .info, но большинство тем и под-тем также используют иные файлы. Приведенная ниже диаграмма показывает какие файлы можно найти в обычной теме и под-теме.



.info (обязателен)

Файл .info - это все, что необходимо Drupal, для того что бы увидеть вашу тему. В нем определяются мета данные, стили, ява-скрипты, регионы и т.д. Остальное по желанию.

Внутреннее имя темы так же определяется здесь. Например, если файл называется «drop.info», тогда Drupal определит имя темы как «drop». Drupal 5 и ранние версии для этого используют имя папки.

Файлы info для тем — новинка, появившаяся в Drupal 6. В пятой версии info файлы были только у модулей.

Файлы шаблонов (.tpl.php)

В этих шаблонах располагается xHTML код, и переменные PHP. Иногда они могут выводить другую информацию, например xml rss. Каждый .tpl.php файл определяет вывод какой то части информации. Они опциональны, и если какого то файла нет, будет использован стандартный вывод. Воздержитесь от создания сложной логики в этих файлах. В большинстве случаев это должны быть  xHTML-теги, и PHP-переменные. Некоторые из этих шаблонов находятся в папках ядра и модулей. Скопировав эти файлы в папку темы, вы заставите Drupal использовать вашу версию.

Примечание: Информация о теме кешируется. При добавлении или удалении шаблонов или функций, нужно сбросить кеш.

template.php

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

Под-темы

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

Drupal 5 более старые версии требуют что бы под-темы находились в папке базовой темы. Для 6 версии это не актуально.

Остальное


Логотип и скриншот не обязательны для функционирования темы, но рекомендованы, особенно если вы внесли вашу тему в репозиторий Drupal.
Скриншот будет показан на странице администрирования тем, и в свойстах пользовательского аккаунта (конечно, если выданы соответствующие права). Больше информации можно найти в руководстве по добавлению скриншота.
Для обеспечения административной настройки пользовательского интерфейса или каких-либо «фич» наподобие логотипа, поиска, миссии сайта и т.д., может быть использован файл "theme-settings.php". Это продвинутый функционал. Более подробную информацию можно найти в руководстве по расширенным настройкам.
Для работы модуля color, необходима папка "color" с файлом "color.inc", а так же различные файлы поддержки.
Если вы хотите создать тему на основе темы ядра, создайте под-тему, или скопируйте и переименуйте тему. Изменение тем Garland или Minnelli крайне не рекомендовано, так как они используются для установки и обновления.
Все темы не являющиеся темами ядра, или модификации тем ядра должны находиться в папке "sites/all/themes".Если вы планируете запустить несколько сайтов из одной сборки Drupal, вы можете сделать тему доступной определенному сайту. Почитайте о этом тут.

Комментарии

Полезная статья! Спасибо!

Вы не подскажете, как сделать так, чтобы таблицы в базе данных, а именно - cache_menu и cach_form не слишком быстро наполнялись или вообще не наполнялись, а то мой сайт за месяц разрастается до 100 MB.

Кеш чистится при запуске Cron, многие так и живут (например я). Если это решение вам не очень нравится, можете попробовать модуль db_maintenance, он вроде занимается оптимизацией таблиц.

Спасибо большое! очень полезно, мало хороших русскоязычных ресурсов. если можно, исправьте на "подтема"