Друпал обладает достаточной мощью и гибкостью для того, чтобы вы могли сделать тему любой сложности. Система даёт бесчисленные способы решения возникающих вопросов, но вы должны знать как Друпал работает с темами, чтобы быть в состоянии выбрать оптимальный вариант. Зная принципы создания тем, вы можете минимизировать свой код и облегчить последующее обслуживание.
Это не означает, что вы должны от и до выучить весь Друпал только для того, чтобы сделать свою тему. В этих главах будут рассмотрены вопросы касающиеся работы с оформлением и вы можете изучить только те из них, которые вам нужны. Некоторые документы рассчитаны на технически подготовленных пользователей, другие носят общий характер, но для понимания большинства вещей от вас потребуется знание:
Старайтесь при разработке темы придерживаться стандартов кодирования — это позволит сохранить чистоту кода темы. Перед созданием темы, вам нужно представлять цели и возможности сайта, для которых вы делаете тему. Зная определённые требования значительно легче разрабатывать новую тему, чем проектируя её, исходя из общих представлений.
Это руководство содержит информацию о работе с темами в Друпале 6. Стандартные темы и их шаблоны в Друпале 6 размещены в своих папках и подпапках общей папки themes, для дополнительных тем используется папка DRUPAL_ROOT/sites/all/themes.
Для изменения существующий темы, создайте в папке sites/all/themes папку для новой темы и скопируйте в неё все файлы той темы которую нужно изменить.
Системное название темы соответствует названию .info-файла. Например, если файл называется drop.info, то Друпал будет считать, что системное название темы это drop.
Когда создаётся новая тема, её системное название не должно совпадать с системным названием другого проекта, так как названия модулей и тем используются в названиях функций, а использование функций с одинаковыми названиями может вызвать конфликты.
Друпал 5 и более ранние версии в качестве системного названия использовали название папки темы, а не название файла.
Стандартным движком тем в Друпале 6 является PHPTemplate. Он написан Adrian Rossouw и использует в качестве шаблонов файлы something.tpl.php, которые позволяют управлять функциями theme_something(). Документацию по функциям оформления можно найти в Drupal API. Каждый файл состоит из HTML-скелета с включением PHP-сниппетов, которые генерируют необходимую информацию.
Даже если вы не знаете PHP, то всё равно сможете создавать свои темы, так как в них используются простые сниппеты, которые можно просто скопировать в свои шаблоны из других тем.
Для всей логики условий и обработки выводимых данных используется файл template.php располагающийся в папке темы. Он не является обязательным, но позволяет сохранить .tpl.php-файлы чистыми и может использоваться для предобработки переменных до того, как они будут использованы в разметке .tpl.php-файлов. В этом файле хорошо делать свои функции, переопределения стандартных функций темизации или какую-либо другую предобработку выводимых данных.
Этот файл должен начинаться с отрывающего PHP-тега <?php
, а закрывающий тег рекомендуется опустить.
Иллюстрация ниже показывает структуру страницы в Друпале и файлы, которые используются в типичной теме и подтеме.
Всё, что нужно Друпалу для того, чтобы увидеть тему, это .info-файл. Если нужно, здесь могут быть определены метаданные, стили, скрипты, регионы и другие параметры.
В Друпале 5 .info-файлы использовались только в модулях. .info-файлы для тем были введены в Друпале 6.
Файлы шаблонов используются для HTML-разметки и переменных PHP. Каждый .tpl.php-файл обрабатывает вывод определённой части данных темы, а в некоторых ситуациях он может служить обёрткой для нескольких .tpl.php-файлов (например profile-wrapper.tpl.php). Эти файлы не являются обязательными и если в вашей теме их нет, то будут использоваться стандартные шаблоны.
Воздержитесь от использования в этих файлах сложной логики. В большинстве случаев это должны быть только элементы HTML задающие скелет страницы и переменные PHP выводящие данные в этих элементах (используйте для предобработки файл template.php).
Эти файлы должен начинаться с отрывающего PHP-тега <?php
, а закрывающий тег рекомендуется опустить.
...
...
Подтемы ведут себя как и любая другая тема, единственное отличие заключается в том, что они наследуют ресурсы своей базовой темы. Для создания подтемы в .info-файле подтемы нужна запись base theme, которая определяет базовую тему, от которой будут наследоваться ресурсы.
Друпал 5 и ранние версии требовали размещения подтемы внутри папки базовой темы. Сейчас это не так. Друпал 6 использует реестр тем, данные о темах берутся из него и подтема не обязательно должна располагаться в папке базовой темы.
При создании темы и использовании темы, учитывайте следующие моменты: