Создание новой темы для Drupal 7. Тема ― важный компонент пользовательского интерфейса (UI) Web- сайта на основе Drupal. В версии Drupal 7 появилась новая методология реализации тем, хотя структура темы существенно не изменилась. Эта статья учит создавать новые темы Drupal 7.
Тема Drupal отделяет логику обработки системы от ее элементов дизайна. Для этого Drupal использует сложную структуру тем, которая состоит из тем, механизмов тем и связей. Компоненты темы взаимодействуют с системами ядра Drupal и элементами дизайна модулей, образуя оригинальный пользовательский интерфейс ― отдельные страницы и формы Drupal. Когда бизнес- логика Drupal отделена от логики представления, код легче поддерживать, а реализацию темы можно менять без необходимости переписывать код, и наоборот. Архитектура среды Drupal показана на рисунке 1.
Рисунок 1. Архитектура среды Drupal. Темы отображают данные, которые ядро Drupal извлекает из базы данных через механизм тем, служащий интерфейсом между ядром Drupal и шаблонами тем. Механизм тем. Механизмы тем - это средства взаимодействия тем с ядром Drupal. Существует несколько механизмов тем, которые можно использовать с Drupal. Вот наиболее популярные из них: PHPTemplate.
Это руководство содержит информацию о работе с темами в Drupal 6.
Отметьте: когда вы создаёте новую тему, её системное название не должно
 . . Сегодня хочу затронуть такую тему как создание собственного шаблона для
Drupal 7, на конкретном примере. Этому делу, будет .
XTemplate. Plain PHPSmarty Engine. При желании можно использовать свой собственный механизм. Механизм тем Drupal по умолчанию PHPTemplate, который рассматривается в этой статье, использует для функций тем Drupal типа theme_filename() отдельные файлы тем с такими именами, как filename.
. Видео переведенное для вас от Кинзябулатова Рамиля и сайта http:// Интернет магазины и сайты на Drupal и 1C .
- . Это уже вторая статья по этой теме. В первой части вы узнали, как
спланировать простую тему и определить элементы страницы. - Drupal обладает достаточной мощью и гибкостью для того, чтобы вы могли сделать тему любой сложности. Система даёт бесчисленные способы.
Каждый из этих файлов содержит HTML- основу и PHP- операторы для работы с динамическими данными. Таким образом, при наличии начальных знаний в области PHP можно легко создавать достаточно сложные темы с помощью PHPTemplate, так как они содержат всего лишь небольшие фрагменты кода. В начало. Планирование темы. Тема состоит из нескольких файлов. Их количество зависит от сложности темы.
В теме может быть всего три файла или несколько десятков, включая графические элементы и различные сценарии, размещенные в нескольких папках в каталоге theme. На рисунке 2 показаны типичные описания файлов (цвета, изображения, логотип, шаблоны, таблицы стилей и PHP- файлы), которые могут содержаться в главной папке темы. Рисунок 2. Типичный состав папки темы.
Не все эти файлы необходимы для темы, и в некоторых темах нет даже файла каскадных таблиц стилей (CSS), который многие считают абсолютно необходимым. Структуру темы и то, как она работает, легче понять, когда знаешь, как используются все эти файлы. Рассмотрим некоторые файлы из каталога theme и их функции в рамках общей темы. Файл . info. info — это обязательный файл: он должен присутствовать в Drupal, чтобы тема была видна. Файлы . info указывают Drupal внутреннее имя темы. Drupal присвоит этой теме имя ibmtheme. Если в теме используются такие элементы, как Java.
Script, метаданные, таблицы стилей или прямоугольные области, их также необходимо определить в файле . Все остальное не обязательно. В листинге 1 это демонстрируется на примере содержимого файла . Bartik. Листинг 1.
Содержимое файла . Bartik; $Id: bartik. Exp $. description = A flexible, recolorable theme with many regions. VERSION. stylesheets[all][] = css/layout. Header. regions[help] = Help. Page top. regions[page_bottom] = Page bottom. Highlighted. regions[featured] = Featured.
Content. regions[sidebar_first] = Sidebar first. Sidebar second. regions[triptych_first] = Triptych first.
Triptych middle. regions[triptych_last] = Triptych last. Footer first column. Footer second column. Footer third column. Footer fourth column.
Footer. settings[shortcut_module_link] = 0. Information added by drupal. Файлы шаблонов . tpl. В каталоге theme есть несколько файлов шаблонов с именами типа xxx. Эти файлы содержат разметку Extensible HTML (XHTML) и PHP- переменные темы. В некоторых случаях они могут содержать и другие виды выходных данных, такие как RSS. В общем случае каждый файл темы Drupal .
Встраивать сложную логику в файлы шаблонов неудобно и нерационально, так как это затрудняет их обслуживание. Желательно, чтобы они содержали только прямые XHTML- теги и переменные PHP. В листинге 2 показано содержимое файла node. Garland. Листинг 2. Содержимое файла node. Garland< ? php. Id: node. tpl. php,v 1.
Exp $. < div id="node- < ? Hide the comments and links now so you can render them later. Файл template. php. Файл template. php обычно содержит всю логику условных переходов и обработки выходных данных темы.
Файл template. php можно использовать также для упрощения файлов . Так как это PHP- файл, он обязательно должен начинаться с открывающего тега PHP < ?
Другие файлы. Во многих темах могут появляться некоторые другие необязательные элементы. В их число входит логотип и скриншот, файл theme- settings. Логотип и скриншот. Эти элементы темы желательны, но не обязательны.
Однако для того чтобы внести тему в хранилище Drupal, требуется скриншот. На рисунке 3 показан скриншот темы Garland. Рисунок 3. Скриншот темы Garland theme- settings. Этот файл содержит параметры управления пользовательским интерфейсом или дополнительные возможности помимо таких общих параметров, как настройки поиска или логотип.
Содержимое этого файла для темы Garland, показанное в листинге 3, дает представление о том, что он в конечном итоге должен отображать. Листинг 3. Содержание файла theme- settings. Garland< ? php. Id: theme- settings. Exp $. * Theme setting callbacks for the garland theme. Implements hook_form_FORM_ID_alter().
The form state. function garland_form_system_theme_settings_alter(& $form, & $form_state) {. Content width'). '#options' => array(. Fluid width'). 'fixed' => t('Fixed width'). Specify whether the content will wrap to a fixed. Place this above the color scheme options.
Отображение будет иметь форму, похожую на рисунок 4. Рисунок 4. Страница параметров темыcolor. Функция модуля color. Если ваша тема требует поддержки модуля цвета, нужно создать каталог color с файлом color. В начало. Создание темы. Существует два основных метода создания темы: можно построить тему с нуля, или изменить уже существующую. В этой статье мы создадим новую тему с нуля.
Тем не менее, мы будем держать под рукой существующие темы, чтобы видеть, как выглядит их структура. Создание структуры каталогов. Сначала создадим каталог для хранения файлов темы. Самое подходящее место для этого каталога - папка sites/all/themes.
Присвоим ему уникальное имя, характерное для нашей темы: оно не должно содержать пробелов. Хотя это не обязательно, полезно также создать подкаталоги для таблицы стилей (CSS- файлов), изображений и сценариев (если они используются). Это поможет сохранить наглядность. В начало. Создание файла . Файл . info ― это просто текстовый файл, содержащий данные ― как правило, параметры, необходимые для описания структуры, а также содержание и параметры настройки темы. Это текстовый файл, каждая строка которого содержит пару из ключа и значения, причем значение расположено справа, а ключ ― слева от знака равенства (=).
Пример приведен в листинге 4. Листинг 4. Пример содержания файла . Garland; $Id: garland. Exp $. description = A multi- column theme that can be configured to modify colors and.
VERSION. stylesheets[all][] = style. Information added by drupal. Комментарии добавляются после точки с запятой (; ) в начале строки. Квадратные скобки ([]) служат для создания массивов связанных значений.
Рассмотрим элементы, которые должны или могут включаться в файл . Имя. Значение name (имя) обязательно. Это должно быть наглядное имя, начинающееся с буквы. Имя подчиняется тем же ограничениям, что и при формировании функций в PHP, поскольку Drupal использует его для той же цели.
Так что имя может содержать цифры и символы подчеркивания (_), но не дефисы (- ), пробелы или знаки препинания. Синтаксис: Описание.
Ключ description (описание) рекомендуется и должен содержать лишь краткое описание темы. Это описание отображается при выборе темы или на странице Appearance. Синтаксис: description = Тема с несколькими столбцами, в которой можно изменять цвета и. Скриншот. Screenshot ― необязательный ключ. Он указывает Drupal, где найти эскиз новой темы. Этот эскиз будет также отображаться на странице Appearance. Если не включить этот ключ в файл .
Drupal вызовет файл по умолчанию screenshot. Если вы решили назвать файл эскиза именем, отличным от screenshot. Синтаксис: screenshot = /images/screenshot. Чтобы создать скриншот, просто создайте снимок с экрана готовой темы в браузере. Затем обрежьте изображение, измените его размер на 2. Поместите этот файл в папку с файлом . Версия. Хотя многие популярные темы содержат ключ version, его использование не рекомендуется.
Если вы собираетесь разместить свою тему в хранилище тем Drupal, не нужно включать version, потому что когда выпуск упаковывается для загрузки, drupal. Но можно включить любую строку версии по своему усмотрению.
Синтаксис: Ядро. Ключ core (ядро) - это обязательное значение. Во всех поддерживаемых в настоящее время версиях Drupal нужно указывать версию Drupal, с которой совместимы ваши модули и темы. Заданное значение будет сравниваться с константой Drupal Core Compatibility (она находится в файле include/bootstrap. Drupal отключит эту тему.
Синтаксис константы: < ? DRUPAL_CORE_COMPATIBILITY', '7. Сценарий упаковки Drupal.
Drupal в каждом узле выпуска (если вы вносите свою тему в проект). Механизм. Ключ engine указывает тип механизма, используемого вашей темой. В большинстве случаев он обязателен. Если engine в файле .
Drupal предполагает, что это отдельная тема, реализованная с помощью файла . Большинство тем из репозитория Drupal.
PHPTemplate, поставляемый с ядром Drupal. Синтаксис: Базовая тема. Если ваша тема ― подтема другой, не забудьте объявить ее базовую тему (base theme), чтобы обеспечить наследование.
Другими словами, в подтеме будет использоваться файл ресурсов базовой темы. Необходимо ввести внутреннее машиночитаемое имя базовой темы. Синтаксис: Области. Ключ regions определяет области блока, доступные для темы. Необходимо определить ключ regions, а затем указать внутреннее машиночитаемое имя в квадратных скобках.