Drupal: создание темы Drupal 7 — обзор структуры файлов

Прежде чем начинать создание темы Drupal 7 необходимо четко понимать внутренние механизмы и устройство системы темизации Drupal. Начнем разбираться с понимания файловой структуры устройства темы.

Тема Drupal 7 представляет собой структурированный набор файлов, на основании которых формируется пользовательское представление страницы. Так же существует возможность создавать под-темы (sub-themes) на базе существующих тем оформления без внесения существенных изменений в последние.

Общая структура файлов темы Drupal 7

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

создание темы Drupal 7 - обзор структуры файлов

Разберем назначение файлов.

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

Начинать создание темы Drupal 7 следует с описания параметров в файле .info. В этом файле задаются основные параметры темы:

Внутренний идентификатор темы совпадает с именем этого файла. Например, если файл имеет имя “drop.info”, то Drupal будет идентифицировать тему оформления как “drop”. При именовании тем и файлов .info допускается использовать латинские буквы, цифры и знаки подчеркивания.

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

Файлы шаблонов используются для определения разметки отдельных HTML элементов страниц и PHP переменных, которые используются для вывода информации. В отдельных ситуациях файлы могут возвращать результаты и других типов, например xml rss.

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

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

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

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

template.php

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

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

Файл template.php должен начинаться с открывающего PHP тэга “<?php”. Закрывающий тэг не нужен, и рекомендуется его не ставить.

Под-темы (Sub themes)

Внешне под-темы ведут себя абсолютно так же, как и базовые темы оформления. Под-темы переопределяют только отдельные ресурсы и параметры родительских тем.

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

Другие ресурсы

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

Любые пользовательские темы следует устанавливать в каталог “sites/all/themes” с целью отделить их от файлов ядра. Если вы планируете запустить несколько сайтов на одном ядре Drupal, можно сделать, чтоб тема была доступна только для определенного сайта. Подробнее можно прочитать в руководстве по многосайтовой установке.

6 комментария(ев) для “Drupal: создание темы Drupal 7 — обзор структуры файлов

  1. Здравствуйте. Вопрос не в тему, но, может, поможете? Достался сайт на Друпале (некоммерческий), а я не программист вообще. Проблема такая: там стоит редактор BUEditor, в нем есть кнопка Insert/edit link. И я уже заколебалась прописывать после неё каждый раз руками «target=»_blank». Как можно отредактировать имеющийся у этой кнопки код, чтобы все ссылки открывались в новом окне? Просто вписать туда html, естественно не получается. А сам код такой:

    php:
    $imce_url = function_exists(‘imce_access’) && imce_access() ? url(‘imce’) : »;

    return «js:
    var B = eDefBrowseButton(‘$imce_url’, ‘attr_href’, ‘Browse’, ‘link’);
    var form = [
    {name: ‘href’, title: ‘Адрес ссылки’, suffix: B},
    {name: ‘html’, title: ‘Текст ссылки’},
    {name: ‘title’, title: ‘Текст в окне’}
    ];
    eDefTagDialog(‘a’, form, ‘Insert/edit link’, ‘OK’);
    «;

    Заранее спасибо.

    1. Привет. Установи CKEditor или TinyMCE. У этих редакторов в окне добавления есть все необходимые дополнительные поля. Для этого поставь модуль Wysiwyg. Далее — выбираешь один из указанных редакторов, у модуля есть инструкция как подгрузить тот, что тебе нужен. После установки — настройка редакторов производится через конфигурационную панель сайта.

      1. Спасибо. Всё это очень интересно, только я не понимаю, как я могу это сделать. Мне предлагается загрузить этот Wysiwyg на свой комп — но какой в этом смысл? Сайт живёт не у меня на компе, а на сервере, которого я в глаза не видела. Теоретически существует администратор, который время от времени обновляет там что-то в целях безопасности. Однако обратиться к нему на предмет «а поставьте мне это, а поставьте мне то» я не могу, могу только покопаться в том, что уже есть, а Wysiwyg в этом списке отсутствует (так написано). Всё, тупик?… В любом случае спасибо, что ответили.

        1. Сами поставьте модуль. В окне установки модуля указываете ссылку на архив, сервак сам его скачает и установит. Единственное — для загрузки файлов редактора нужен доступ по ftp. В модуле есть только интерфейсы управления разными редакторами. Как все сделать пошагово расписано в документации к модулю, причем описание рассчитано на абсолютных новичков.

          Если не можете сами, заплатите админу, чтоб он поставил. Просто непонятно, как можно управлять сайтом без возможности делать подобные изменения. А если Вам потребуется добавить новые функции?

          1. Если мне потребуется добавить новые функции, то это мои проблемы. Долго объяснять, как это получилось — просто раньше между мной и администратором были заинтересованные посредники, теперь их нет. И доступа по ftp у меня, конечно, тоже нет. Понимаю, что это странная ситуация, но я не имею права обратиться к этому админу не то что с какими-то пожеланиями, деньгами и т.п., но даже если сайт вырубится. И формально сайт, кстати, тоже не мой. Я его просто веду и модерирую на общественных началах, потому что не могу бросить начатое дело и пользователей.
            В любом случае спасибо Вам за уделённое время.

Комментарии запрещены.