Определение тем



В Drupal 6, .info-файл является для темы обязательным — без этого файла Drupal не увидит тему. Системное название темы зависит он названия этого файла, т.е. если файл называется drop.info, то Drupal поймёт это как «тема с названием drop». Системное название темы используется в названиях функций, поэтому на название файла накладываются определённые ограничения:

  • название должно начинаться с буквы;
  • можно использовать цифры, но название не должно начинаться с цифры;
  • нельзя использовать пробелы и пунктуацию;
  • можно использовать знак подчёркивания, но нельзя использовать дефис;

Правила записей в этом файле похожи на правила для .ini-файлов, т.е. в одной строке находится сначала ключ, а затем его значение. Это статический текстовый файл определяющий настройки темы, причём большинство настроек этого файла являются дополнительными. Когда значения не указаны, то будут применяться значения по умолчанию.

Отметьте:

  • Названия тем не должны совпадать с названиями модулей, т.к. при совпадении системных названий будут использоваться функции с одинаковыми названиями. Все установленные компоненты должны иметь уникальные имена.
  • Содержание .info-файлов кешируется в базе данных, таким образом для перезаписи кеша и вступления изменений в силу, вам нужно посетить страницу тем: Administer → Site building → Themes.

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

Параметры тем

name (название)

Обязательная строка. Сюда записывается название темы для людей. Оно отличается от системного названия, так что здесь нет ограничений на разрешённые знаки.

name = Theme Name

description (описание)

Это описание темы которое показывается в системе на странице тем: Administer → Site building → Themes, поэтому, чтобы не затруднять работу со страницей тем, постарайтесь сделать это описание как можно более кратким.

description = The theme's brief description.

screenshot (скриншот)

Также как и описание это изображение показывается в системе на странице тем. Прежде чем сделать скриншот своей темы, ознакомьтесь с рекомендациями по его созданию. Если скриншот лежит в подпапке темы, то используйте относительный адерес, например: screenshot = images/theme-thumbnail.gif.

screenshot = screenshot.png

version (версия)

Строка с версией будет автоматически добавлена в .info-файл при добавлении темы на drupal.org. Таким образом, вы можете не заполнять это значение при создании темы. Однако если ваша тема не размещается на drupal.org, то эту строку рекомендуется заполнить.

version = 1.0

core (версия системы)

Обязательная строка. Начиная с Drupal 6, во всех .info-файлах должно быть явно определена версия системы. Значение этой этой строки сравнивается в констаной DRUPAL_CORE_COMPATIBILITY, и если значения не совпадают, то тема считается несовместимой.

core = 6.x

engine (движок темы)

В этой строке указывается с каким движком работает тема. Если в этой строке ничего не указано, то будет предпологаться, что тема существует как отдельный .theme-файл.

engine = phptemplate

base theme (базовая тема)

Это строка используется в подтемах. Для любой подтемы нужно определить базовую тему — это позволит подтеме наследовать настройки базовой темы. Для любой темы можно создавать неограниченное количество подтем и каждая следующая тема будет наследовать настройки всех предыдущих в каскадном порядке. Следующая запись используется в теме Minelli, базовой темой для которой определена тема Garland.

base theme = garland

regions (регионы, колонки)

Системное название региона указывается в скобках, а человеческое название в правой части. Та запись которая находится справа, будет показываться на странице блоков: Administer → Site building → Blocks. Общая форма записи для определения регионов: regions[theRegion] = The region name.

Вы можете переопределить эти значения под свои определённые нужды, но учитывайте, что системные названия и названия переменных регионов в файле page.tpl.php работают вместе. Т.е. регион который называется Left sidebar на странице тем, в файле page.tpl.php выводится переменной $left и системное название региона в .info-файле должно соответствовать названию переменной в файле page.tpl.php (название из скобок автоматически конвертируется в переменную PHP, таким образом на системные названия регионов накладываются стандартные для PHP ограничения).

Если регионы явно не определены, то будут использоваться следующие значения:

regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer

features (возможности)

Эти строки используются чтобы включить/выключить определённые возможности темы. Записи внутри .info-файла будут определять видимость полей на странице настройки темы в системе. Вы можете посмотреть эти настройки на странице Administer → Site building → Themes → НазваниеТемы. По умолчанию, если ни одна из возможностей не определена в .info-фале, то предполагается, что они включены все. Определяйте только возможности необходимые в теме, не нужно включать все возможности, если они теме не нужны.

Ниже находится список всех доступных возможностей. Строки primary_links и secondary_links закомментированы, таким образом Primary и Secondary links будет невозможно использовать.

features[] = logo
features[] = name
features[] = slogan
features[] = mission
features[] = node_user_picture
features[] = comment_user_picture
features[] = search
features[] = favicon
; These last two disabled by redefining the above defaults with only the needed features.
; features[] = primary_links
; features[] = secondary_links

Примечания

  • HOOK_features() больше не поддерживается.
  • For more advanced options for features see the Custom Theme Settings handbook page.

stylesheets (стили)

Раньше, стили можно было добавить вызовом drupal_add_css() в файле template.php. Начиная с 6.x, стили добавляются через .info-файл.

; Add a stylesheet for all media
stylesheets[all][] = theStyle.css

; Add a stylesheets for screen and projector media
stylesheets[screen, projector][] = theScreenProjectorStyle.css

; Add a stylesheet for print media
stylesheets[print][] = thePrintStyle.css

Темы могут переопределять .css-файлы которые включены в модули. Для этого нужно создать новый файл стиля с таким же названием как и файл стиля модуля, после чего определить его в .info-файле. Например, стиль модуля System находится по адресу modules/system/system-menus.css. Если вы сделаете файл с названием system-menus.css, положите его в папку темы и определите его загрузку в .info-файле, то будет использоваться ваш новый файл.

stylesheets[all][] = system-menus.css

scripts (скрипты)

Раньше, JavaScript можно было добавить вызовом drupal_add_js() в файле template.php. Начиная с 6.x, JavaScript добавляют через .info-файл.

scripts[] = sample.js

Темы могут переопределять .js-файлы которые включены в модули. Это делается аналогичо .css-файлам.

php

Эта строка определяет минимальную версию PHP с которой работает тема. По умолчанию, это значение берётся из константы DRUPAL_MINIMUM_PHP, которая определена в ядре. Если необходимо, то это значение может быть переопределено на использование более новой версии PHP.

php = 4.3.3

Пример .info-файлов темы Garland и её подтемы Minelli

Garland:

; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $
name = Garland
description = Tableless, recolorable, multi-column, fluid width theme (default).
version = VERSION
core = 6.x
engine = phptemplate
stylesheets[all][] = style.css
stylesheets[print][] = print.css

; Information added by drupal.org packaging script on 2008-02-13
version = "6.0"
project = "drupal"
datestamp = "1202913006"

Minnelli (подтема Garland):

; $Id: minnelli.info,v 1.7 2007/12/04 20:58:44 goba Exp $
name = Minnelli
description = Tableless, recolorable, multi-column, fixed width theme.
version = VERSION
core = 6.x
base theme = garland
stylesheets[all][] = minnelli.css

; Information added by drupal.org packaging script on 2008-02-13
version = "6.0"
project = "drupal"
datestamp = "1202913006"

Comments

Post new comment

Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.