Текст книги "CMS Drupal: система управления содержимым сайта"
Автор книги: Виктор Ромашов
Жанр: Программы, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 15 (всего у книги 19 страниц)
Для того чтобы создать свой собственный модуль, необходимо не только разработать его код в соответствии с правилами CMS Drupal, но и сопроводить кодовый файл набором дополнительных файлов, имеющих определенный формат и имя. Все файлы модуля должны находиться внутри папки – ее содержимое и будет считаться одним модулем. При этом папка должна называться так же, как и создаваемый модуль. Если вы читаете эту главу с целью создания своего собственного модуля, то предлагаю вам сразу создать папку модуля в каталоге sites/all/modules сайта.
Однако перед этим следует задуматься над именем вашего модуля, ведь, как говорится, «как корабль назовешь, так он и поплывет». В нашем случае «корабль» может вообще не поплыть. В частности, если вы нарушите одно из правил именования модулей и тем оформления:
▪ в названии можно использовать только буквы и цифры, а также знак подчеркивания;
▪ название должно начинаться только с буквы;
▪ название модуля должно быть уникальным не только среди других названий модулей, но и среди названий тем оформления (это же относится и к названиям тем оформления);
▪ если ваш модуль не совсем готов, то к имени его папки нужно добавлять один из предопределенных суффиксов:
– head – говорит о том, что данный модуль не для использования (он является основной для какого-либо другого модуля); например, my_module-6. x-1.0-head;
– dev – версия модуля еще не готова и предназначена только для разработчиков; например, my_module-6.x-1.0-dev;
– beta – модуль готов для публичного тестирования, однако в нем еще могут быть ошибки, а набор функционала данного модуля со временем может быть расширен; например, my_module-6.x-1.0-beta1, my_module-6.x-1. 0– beta2;
– rc – модуль готов для публичного использования, однако в нем еще могут быть ошибки (найденные ошибки будут устранены в окончательной версии модуля, а вот новая функциональность больше добавляться не будет); например, my module-6.x-1.0-rc1,my module-6.x-1.0-rc2;
– pr – данный модуль прошел бета-тестирование и по крайней мере один этап rc; например, my_module-6.x-1.0-pr.
Итак, в папке модуля обязательно должны находиться файлы со следующими именами:
▪ <имя_модуля>.info;
▪ <имя_модуля>.module.
Кроме того, в папке модуля могут находиться дополнительные файлы, например README.txt (не забудьте описать назначение вашего модуля в этом файле).
Файл <имя_модуля>.info
Данный файл содержит общую информацию о вашем модуле, и именно его существование говорит CMS Drupal о том, что содержимое папки является модулем. Он представляет собой обычный текстовый файл и имеет следующий формат:
; $Id$
name = <Имя модуля>
description = <описание модуля>
core = <версия CMS Drupal>
<дополнительные ключевые слова>
Каждый файл <имя_модуля>.info должен содержать как минимум три ключевых слова:
▪ name – имя модуля должно включать в себя только одну прописную букву; неважно, в каком месте она будет находиться, но должна быть обязательно только одна;
▪ description – описание, которое будет показываться напротив модуля в списке раздела Управление → Конструкция сайта → Модули; если в описании вы используете специальные символы, их нужно заменять кодами языка HTML вида&код символа;;
▪ core – версии CMS Drupal, для которых предназначен модуль; чтобы указать весь набор версий или подверсий, нужно число, определяющее версию/подверсию, заменить символом x; например, 6.x.
Помимо обязательных ключевых слов, которые были представлены выше (в примере формата), в файле <имя_модуля>.info можно использовать набор дополнительных ключевых слов, позволяющих более подробно описать ваш модуль и его назначение. К дополнительным ключевым словам можно отнести следующие.
▪ dependencies[] – определяет модуль, от которого зависит ваш модуль и который необходимо включить, чтобы администратор смог включить ваш модуль. Если вам нужно указать несколько зависимостей, то просто укажите ключевое слово dependencies[] несколько раз.
▪ package – определяет секцию модулей, в которой должен отображаться ваш модуль. Секция – это группа модулей, которые выполняют смежную или похожую работу. Все модули из одной секции будут выводиться в списке модулей раздела Управление → Конструкция сайта → Модули в виде ветви, вложенной в основной список модулей (будет образована древовидная структура). Вы можете указывать любое имя секции либо же воспользоваться одним из уже устоявшихся имен: Audio, Bot, Chat, E-Commerce, Event, Feed Parser, Organic groups, Station, Video, Views, Voting (if it uses/requires VotingAPI).
С другой стороны, присваивать секцию для своего модуля без особой необходимости не рекомендуется, так как использование секций усложняет не только общий вид списка модулей раздела Управление → Конструкция сайта → Модули, но и сам процесс использования данного списка.
Файл <имя_модуля>.module
Каждый кодовый файл модуля, помимо функций, созданных разработчиком для реализации назначения модуля, может и должен содержать набор функций, имеющих специальное название, – так называемых Ьоок'ов. Такие функции выполняют более тесную интеграцию вашего модуля с CMS Drupal и другими модулями этой системы.
Функция имяМодуля_Ье1р($раШ, $arg). Данная функция предназначена для того, чтобы сопроводить ваш модуль справочной информацией. В лучших традициях профессиональных разработчиков информация, указанная в этой функции, будет отображаться в разделе Управление → Помощь вашего сайта (после того как вы включите свой модуль).
Основной синтаксис данной функции следующий:
function имяМодуля_help($path, $arg) {
$output = '';
switch ($path) {
case «admin/help#<имяМодуля>»:
$output = '<p>'. t(«Displays links to nodes created on this date»).
'</p>';
break;
}
return $output;
}
Примечание
Функция t() используется для создания описания.
Читатель, который знаком с языком PHP, сразу заметит, что вся справочная информация о вашем модуле хранится в переменной $output, и после вызова данной функции содержимое этой переменной будет выведено на экран. Однако не следует присваивать переменной $output непосредственно справочный текст – для этого необходимо использовать оператор switch, как это было указано в примере выше. Вы не должны забывать, что, помимо вас, модули для CMS Drupal создает еще огромное количество разработчиков, и они также хотят отобразить в разделе Управление → Помощь справочную информацию о своих модулях. Именно для гарантии отсутствия конфликтов между справочной информацией модулей различных разработчиков и используется оператор switch.
Функция имяМодуля_perm(). Основное назначение данной функции – перечисление прав доступа, которые будет разрешено предоставлять ролям. Она просто возвращает названия этих прав доступа (которые будут отображаться в списке раздела Управление → Управление пользователями → Управление доступом (в шестой версии CMS Drupal – Разрешения)) в виде массива.
Примечание
Названия прав доступа, которые вы возвращаете в виде массива, должны быть уникальны. Иначе говоря, ни один другой установленный у вас модуль не должен использовать то же самое название. Для соответствия этому правилу разработчики CMS Drupal рекомендуют указывать в именах прав доступа имя вашего модуля. Например, «access имяМодуля content».
Основной синтаксис функции:
function имяМодуля_perm() {
return array('мое первое право доступа', 'еще одно возможное право
доступа', 'и еще право доступа');
}
Функция имяМодуля_block(). С помощью данной функции можно создать блок, который будет добавляться при включении вашего модуля, а также определить содержимое этого блока. Функция должна принимать два входящих параметра:
▪ $op – операция с блоком; параметр может принимать следующие значения: list (определить параметры блока, которые после включения модуля будут использоваться для отображения блока в списке блоков), view (вывести содержимое блока);
▪ $delta – номер данного блока по отношению к другим блокам модуля, если ваш модуль создает сразу несколько блоков.
Итак, основной синтаксис функции следующий:
function имяМодуля_block($op='list', $delta=0) {
if ($op == «list») {
$block[0]["info"] = t('Название блока');
return $block;
} else if ($op == 'view') {
<пользовательский код, формирующий содержимое блока в переменной
$block>
return $block;
}
}
Функция имяМодуля_menu(). Эта функция – одна из самых интересных. Она позволяет создавать собственные страницы сайта (например, страницу для настройки модуля), а также размещать в меню ссылки на созданные страницы.
Чтобы лучше понять механизм работы данной функции, рассмотрим ее основной синтаксис, используемый для создания одной страницы сайта (чтобы сразу создать несколько страниц, просто определите в функции несколько элементов массива $items):
function onthisdate_menu() {
$items = array();
$items['адрес новой страницы'] = array(
'title' => 'заголовок страницы',
'description' => 'описание назначения страницы',
'page callback' => 'имя функции, которая возвращает содержимое
страницы',
'page arguments' => array('onthisdate_admin'),
'access arguments' => array('массив прав доступа, которыми должна
обладать роль посетителя, чтобы ему было разрешено открыть данную
страницу'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
Обратите внимание на элемент type массива $items. Он позволяет определить, какие именно действия будут выполняться для новой страницы вашего сайта. Данный элемент может принимать следующие значения:
▪ MENU_NORMAL_ITEM – создать новую страницу и добавить ссылку на нее в меню (в стандартном блоке навигации, то есть в меню Навигация);
▪ MENU_CALLBACK – создать новую страницу, а ссылку в меню добавлять не нужно.
Примеры модулей
В качестве примера рассмотрим код простых модулей, добавляющих дополнительные возможности CMS Drupal. Приведенный ниже код взят с сайта http://www.setegnom.com.
Публикация документов без модерации. Данный модуль добавляет CMS Drupal возможность назначения определенным ролям привилегию на публикацию любых типов документов без модерации (по умолчанию так можно публиковать только комментарии). Допустим, модуль будет называться Moderation skip.
Итак, создайте в папке sites/all/modules вашего сайта каталог moderation_skip. В этом каталоге создайте два файла: moderation_skip.info и moderation_skip. module.
Файл moderation_skip.info должен содержать следующий текст:
name = Moderation skip
description = «Allow users with certain roles to bypass node moderation.»
version = «5.x-0.1»
Файл moderation_skip.module должен содержать следующий код:
<?php
function moderation_skip_perm() {
return array('skip node moderation');
}
function moderation_skip_nodeapi(&$node, $op, $teaser = NULL, $page =
NULL) {
switch ($op) {
case 'submit':
if ($node->status!= 1 && user_access('skip node moderation')) {
if (!user_access('administer nodes')) { // Don't reset for admins
$node->status = 1; // Publish the node
}
}
break;
}
}
?>
Вот и все – модуль создан. Вам осталось только включить его в разделе Управление → Конструкция сайта → Модули, после чего настроить права доступа в разделе Управление → Управление пользователями → Управление доступом (в шестой версии CMS Drupal раздел называется Разрешения).
Правила создания тем оформленияТемы оформления – это не те проекты, которые лучше начинать с нуля (по крайней мере если вы впервые задались вопросом создания своей темы оформления и не имеете опыта в этой области). Гораздо проще создать тему оформления на основе одной из уже существующих тем оформления. Поскольку CMS Drupal, ее модули и темы оформления поставляются на основе лицензии GPL, ничего зазорного в модификации другой темы оформления нет. А для начинающих разработчиков модификация чужой темы оформления – это способ лучше понять принцип ее создания. Ведь гораздо проще изменять уже созданную и заведомо работающую тему оформления, вместо того чтобы повторно создавать одно и то же (базовые функции разных тем оформления практически ничем не отличаются) и потом думать, почему же оно не работает.
Несмотря на то что создание собственной темы оформления для CMS Drupal больше относится к дизайнерам и дизайну, вам все равно не обойтись без знания языка PHP. Ведь, помимо создания элементов темы оформления (изображений), вам придется как-то связать их между собой, и этой связкой будет язык PHP.
Файлы, из которых состоит тема оформленияКаждая тема оформления должна состоять из набора файлов, имеющих предопределенные имена, а для некоторых файлов сценариев – даже предопределенные функции. Все эти файлы должны находиться в папке, название которой соответствует названию темы оформления (на названия тем оформления накладываются те же ограничения, что и на названия модулей).
Начнем рассмотрение процесса создания темы оформления именно со списка изображений, которые должны быть в каталоге вашей новой темы оформления:
▪ logo.png – логотип вашего сайта, как правило, обязателен;
▪ screenshot.png – скриншот вашей темы оформления (150 х 90 пикселов), который будет отображаться напротив вашей темы в списке возможных тем раздела Управление → Конструкция сайта → Темы оформления;
Примечание
Помимо скриншота для раздела Управление → Конструкция сайта >Темы оформления желательно также создать скриншот, который будет отображаться в списке тем оформления на сайте http://www.drupal.org (если вы собираетесь размещать вашу тему в свободном доступе). Данный скриншот должен иметь размеры 320 х 200 пикселов и имя screenshot-drupal.org.png или screenshot-drupal.org.jpg.
▪ background.png – если ваша тема оформления будет использовать какое-то фоновое изображение, лучше всего назвать файл с фоновым изображением именно так.
В каталоге темы оформления можно хранить и другие изображения для вашей темы (всякие стрелочки, уголки и т. д.), но для удобства лучше создать в каталоге темы оформления подкаталог images и поместить все дополнительные изображения в него.
Помимо файлов изображения, каждая тема оформления должна содержать несколько PHP-файлов, управляющих отображением темы оформления и определяющих возможности, которые она поддерживает:
▪ <имя темы>.info;
▪ Page.tpl.php – формирует страницы вашего сайта, например определяет, где именно будут отображаться блоки, присвоенные тому или иному региону, описанному в файле Template.php (это делается простым выводом в определенном месте содержимого переменной, символизирующей тот или иной регион).
Примечание
Файлы вида *.tpl.php используются для создания HTML-кода страницы сайта или отдельной ее части.
Кроме этих файлов, в папке темы оформления могут находиться и другие файлы, но их использование не обязательно. Если какого-то из дополнительных файлов нет, значит, вместо настроек, которые должны им переопределяться, будут использоваться настройки по умолчанию. Настройки по умолчанию определяются одноименным файлом из каталога themes/engines/phptemplate (для движка темы оформления по умолчанию).
▪ Template.php – основной файл темы оформления, функции которого описывают возможности темы оформления. Например, в нем определяется список регионов, в которые ваша тема оформления сможет помещать блоки (фактически создается несколько переменных, которые будут символизировать регионы и хранить код блоков, отображающихся в этих регионах).
▪ node.tpl.php – шаблон, в соответствии с которым будут формироваться публикации на вашем сайте.
▪ comment.tpl.php – шаблон, по которому будут формироваться комментарии на вашем сайте.
▪ box.tpl.php – шаблон, в соответствии с которым будут формироваться контейнеры на вашем сайте.
▪ block.tpl.php – шаблон, в соответствии с которым будут формироваться блоки на вашем сайте.
Файл <имя_темы>.info
Данный файл содержит общую информацию о вашей теме оформления. Именно его существование говорит CMS Drupal шестой версии о том, что содержимое папки является темой оформления. Он является обычным текстовым файлом и имеет следующий формат:
; $Id$
name = <имя темы оформления>
core = <версия CMS Drupal>
<дополнительные ключевые слова>
Примечание
Шестая версия CMS Drupal «считает», что тема оформления называется так, как называется файл <имя_темы>Лп1о (без расширения), а пятая версия в качестве названия темь оформления использует название папки, в которой находятся файлы темы оформления.
Каждый файл <имя_темы>.info должен содержать как минимум два ключевых слова: name и core (версии CMS Drupal, для которых предназначена тема оформления; чтобы указать весь набор версий или подверсий, нужно число, определяющее версию/подверсию, заменить символом x, например 6.x).
Помимо обязательных ключевых слов, в файле <имя_темы>.info можно использовать набор дополнительных ключевых слов, позволяющих более подробно описать тему оформления и ее назначение:
▪ description – описание, которое будет выводиться напротив темы в списке раздела Управление → Конструкция сайта → Темы оформления; если в описании вы используете специальные символы, их нужно заменять кодами языка HTML вида&код символа;;
▪ screenshot – имя файла, который является скриншотом темы оформления и будет отображаться в разделе Управление → Конструкция сайта → Темы оформления напротив соответствующей темы (по умолчанию используется имя screenshot.png);
▪ version – номер версии вашей темы оформления;
▪ engine – движок, на котором основана данная тема оформления (если ключевое слово не указано, то считается, что тема оформления является отдельным THEME-файлом);
▪ base theme – определяет имя основной темы и используется только в подтемах (если вы создаете тему оформления, при включении которой будет добавлено сразу несколько тем оформления, которые и называются подтемами);
Примечание
Единственное отличие подтем от тем оформления заключается в том, что они используют ресурсы базовой темы. В частности, подтема наследует следующие ресурсы базовой темы: все CSS-файлы, все JS-файлы, все файлы вида *.tpl.php, все определения из файла template.php (при этом могут включать свой файл template.php, содержимое которого будет дополнять содержимое файла базовой темы), а также файл скриншота. А вот следующее содержимое базовой темы не наследуется: файл logo.png, файл theme-settings.php, некоторые настройки из файла имя_темы. info, а также содержимое папки color.
▪ regions[peгион] – определяет «человеческое» название указанного в квадратных скобках региона (например, regions [left] = Left sidebar), которое будет использоваться темой оформления;
▪ features[] – массив, каждый элемент которого включает определенную возможность настройки вашей темы оформления. Например, ниже представлены все настройки темы оформления, которые можно включить:
features[] = logo
features[] = name
features[] = slogan
features[] = mission
features[] = node_user_picture
features[] = comment_user_picture
features[] = search
features[] = favicon
features[] = primary_links
features[] = secondary_links
▪ stylesheets[all][] – массив, определяющий CSS-файлы, которые можно использовать для настройки любых стилей оформления вашей темы;
▪ stylesheets[print][] – массив, определяющий CSS-файлы, которые можно применять для настройки стилей оформления вашей темы, используемых для вывода страницы на печать;
▪ stylesheets[screen, projector][] – массив, определяющий CSS-файлы, которые можно использовать для настройки стилей оформления вашей темы, применяемых для вывода страницы в окне браузера;
Примечание
Если ни один CSS-файл стиля оформления не указан, то CMS Drupal будет автоматически пытаться загрузить файл стилей style.css, расположенный в папке темь оформления. Если хотя бы один файл стилей указан в файле <имя_темы>.info, то стандартный файл стилей style.css загружаться не будет.
Помимо файла <имя_темы>.info, для загрузки дополнительных файлов стилей можно использовать функцию drupal_add_css(путь_к_файлу_CSS);. Ее можно использовать в файле template.php.
▪ scripts[] – массив, определяющий JS-файлы, которые включены в вашу тему оформления;
▪ php – определяет минимальную версию PHP, с которой может работать ваша тема оформления. Вместо конкретного числа вы можете использовать константу DRUPAL_MINIMUM_PHP, значение которой определяется самой CMS Drupal.
Переменные, которые используются в файлах
В файлах, из которых состоят темы оформления, используются стандартные переменные CMS Drupal, назначение которых вы должны знать, если хотите научиться создавать собственные темы оформления.
Примечание
Вы можете распечатать список всех доступных в сценарии переменных, если воспользуетесь функцией вида print_r(get_defined_vars());.
Назначение многих переменных зависит от конкретного файла, в котором эти переменные используются. Такие переменные мы будем рассматривать при изучении соответствующего файла. Однако помимо уникальных переменных существуют стандартные, которые используются во многих файлах тем оформления, и при этом их содержимое не меняется. Рассмотрим назначение таких переменных сейчас, а в дальнейшем просто будем перечислять их, если они используются в файле, который мы в данный момент изучаем:
▪ $directory – содержит путь к папке, в которой находятся файлы текущей темы оформления;
▪ $zebra – замещает odd/even (нечетный/четный) номер материала в списках (позволяет посредством CSS чередовать цвета в списках);
▪ $is_front – если значение переменной равно 1 (True), то сейчас отображается главная страница сайта;
▪ $picture – определяет аватарку пользователя;
▪ $node_url – полный путь к текущей странице;
▪ $submitted – автор и дата создания публикации, комментария и т. д.
Файл template.php
Как было сказано выше, данный файл описывает возможности создаваемой вами темы оформления. Это делается с помощью функций с предопределенными именами, которые предназначены для выполнения конкретных действий. И сейчас мы попробуем рассмотреть синтаксис некоторых из этих функций.
Функция <имя_темы>_regions(). С помощью данной функции выполняется определение регионов, которые будет поддерживать ваша тема оформления для отображения блоков. Фактически определяется массив, который будет хранить в себе код, выводимый в том или ином регионе. Каждый элемент этого массива – отдельный регион. И если такой массив будет состоять из пяти элементов, значит, ваша тема оформления будет поддерживать пять регионов.
Посмотрим на пример данной функции, которая определяет поддержку пяти стандартных регионов:
function <имяТемы>_regions() {
return array(
'header' => t('header'),
'left' => t('left sidebar'),
'content' => t('content'),
'right' => t('right sidebar'),
'footer' => t('footer'),
);
}
Как можно заметить из примера, тема оформления будет поддерживать пять регионов: header, left sidebar, content, right sidebar и footer (именно эти названия будут отображаться на странице настройки блоков CMS Drupal).
Описав регионы, необходимо создать переменные, содержимое которых будет отображаться в регионах: $header, $left, $content, $right, $footer (то есть имя переменной должно быть аналогично имени элемента массива). Как правило, данные переменные создают в одной из функций файла node.tpl.php. Для этого необходимо воспользоваться следующим синтаксисом: $variables[*iNw_neременной'] = theme('blocks', 'регион');. В нашем случае имя переменной должно совпадать с именем региона.
Только от вас зависит, где именно на странице будет отображаться содержимое созданных регионов – это определяется в файле page.tpl.php. В данном файле достаточно вывести содержимое переменной, соответствующей региону, в том месте страницы, где должны находиться блоки.
Файл page.tpl.php
Данный файл содержит шаблон всех страниц вашего сайта, который будет применяться при использовании соответствующей темы оформления. Следует заметить, что, помимо этого файла, также могут существовать файлы вида page-путь_к_странице. tpl.php (в пути к странице символ / заменяется символом —, например страница /node/edit определяется файлом page-node-edit.tpl.php). Такие файлы содержат шаблон, который будет применяться только для указанной в названии файла страницы. Формат этих файлов полностью идентичен формату файла page.tpl.php.
Вы можете редактировать код этого сценария, однако перед этим следует определиться с тем, для чего предназначены некоторые используемые переменные:
▪ $content – хранит содержимое документа;
▪ $date – хранит дату создания документа;
▪ $id – содержит идентификатор выводимой публикации;
▪ $links – содержит контекстные ссылки документа;
▪ $name – содержит имя автора документа;
▪ $page – если значение равно 1 (True), то текущий документ показывается как страница, а не как краткое содержание;
▪ $sticky – если значение равно 1 (True), то документ закреплен вверху списков;
▪ $teaser – если значение параметра равно True, то в переменной $content содержится анонс публикации;
▪ $terms – список терминов;
▪ $title – содержит название документа;
▪ $taxonomy – массив определяет список терминов, присвоенных публикации;
▪ $base_path – путь к папке с CMS Drupal;
▪ $feed_icons – значок RSS;
▪ $footer_message – содержит строку, отображаемую в подвале (нижней части) вашего сайта (определяется в разделе Управление → Настройка сайта → Информация о сайте);
▪ $logo – адрес логотипа, используемого на вашем сайте;
▪ $messages – содержит сообщение о статусе пользователя или возникших в работе CMS Drupal ошибках (выводятся вверху страницы);
▪ $mission – содержит строку с информацией о назначении вашего сайта (определяется в разделе Управление → Настройка сайта → Информация о сайте);
▪ $primary_links – массив ссылок главного меню;
▪ $site_name – название сайта (определяется в разделе Управление → Настройка сайта → Информация о сайте);
▪ $site_slogan – девиз вашего сайта (определяется в разделе Управление → Настройка сайта → Информация о сайте);
▪ а также переменные $directory, $zebra, $picture, $submitted, $node_ url, $is_front.
Кроме того, в этом файле используется объект $node (он будет описан далее в этом подразделе).
Примечание
Вы можете вывести на экран список всех переменных, которые доступны в файле *.tpl.php. Для этого достаточно воспользоваться командой var_dump(get_defined_ varsO);.
Файл block.tpl.php и его разновидности
Вид блоков на вашем сайте определяется файлом block.tpl.php, а также файлами с именами вида block-модуль-номер_блока. tpl.php, block-модуль. tpl.php, block-регион. tpl.php. Формат этих файлов полностью идентичен, а их назначение заключается в том, чтобы более точно настроить вид отдельных блоков сайта.
1. Так, самым первым применяется файл block.tpl.php – шаблон, описанный в нем, применяется для всех блоков.
2. После этого CMS Drupal ищет файлы вида block-регион. tpl.php и присваивает шаблон, описанный в них, всем блокам, которые расположены в соответствующем регионе (напомним, наиболее часто используются следующие регионы: left, right, header, footer).
3. Затем CMS Drupal ищет файлы вида block-модyль. tpl.php и присваивает шаблон, описанный в них, всем блокам заданного модуля.
4. После этого CMS Drupal ищет файлы вида block-модyль-номер_блока. tpl.php. Если такие файлы есть, то определенные в них шаблоны заменяют собой текущие шаблоны для блоков, которые были созданы соответствующим модулем и имеют соответствующий номер (значение свойства delta объекта $block).
Перед тем как начать редактирование файлов с шаблонами блоков, ознакомьтесь с переменными, которые в них используются:
▪ $id – содержит идентификатор выводимого блока;
▪ $block_id – хранит идентификатор выводимого блока отдельно для левого и правого столбцов;
▪ $block_zebra – замещает odd/even в списках (позволяет посредством CSS чередовать цвета в списках) отдельно для левого и правого столбцов;
▪ а также переменные $directory, $zebra, $is_front.
Кроме того, в этом файле используется объект $block, который поддерживает следующие свойства:
▪ $block->module – название модуля, создавшего блок;
▪ $block->delta – номер данного блока в списке блоков, созданных модулем, имя которого указано в свойстве module;
▪ $block->subject – название блока;
▪ $block->content – содержимое блока;
▪ $block->status – статус блока (0 или 1);
▪ $block->region – название региона, в котором отображается блок (left, right, header, footer);
▪ $block->throttle – настройки, используемые модулем Throttle.
Пример файла. В качестве примера взглянем на стандартный файл block.tpl.php движка тем PHPTAL theme engine.
<div id="block-<?php print $block->module.'-'. $block->delta;?>"
class="block block-<?php print $block->module?>">
<?php if ($block->subject):?>
<h2><?php print $block->subject?></h2>
<?php endif;?>
<div class="content"><?php print $block->content?></div>
</div>
Файл box.tpl.php
В данном сценарии используются следующие переменные:
▪ $title – определяет название контейнера;
▪ $content – хранит содержимое контейнера;
▪ $region – определяет регион, в котором будут отображаться элементы страницы (может принимать значения main, left или right).
Пример файла. В качестве примера взглянем на стандартный файл box.tpl.php движка тем PHPTAL theme engine.
<div class="box">
<?php if ($title):?>
<h2><?php print $title?></h2>
<?php endif;?>
<div class="content"><?php print $content?></div>
</div>
Файл comment.tpl.php
В данном сценарии используются следующие переменные:
▪ $author – ссылка на профиль автора;
▪ $content – сам комментарий;
▪ $date – дата создания комментария;
▪ $id – идентификатор выводимого комментария;
▪ $links – определяет контекстные ссылки под комментариями;
▪ $new – отображает слово new, если комментарий является новым;
▪ $title – заголовок комментария;
▪ а также переменные $directory, $zebra, $picture, $submitted, $is_ front.
Кроме того, в сценарии используется объект $comment.
Пример файла. В качестве примера взглянем на стандартный файл comment. tpl.php движка тем PHPTAL theme engine.
<div class="comment<?php print ($comment->new)? ' comment-new': '';
print ($comment->status == COMMENT_NOT_PUBLISHED)? ' comment-unpublished'
: '';?> clear-block">
<?php print $picture?>
<?php if ($comment->new):?>
<a id="new"></a>
<span class="new"><?php print $new?></span>
<?php endif;?>
<h3><?php print $title?></h3>
<div class="submitted">
<?php print $submitted?>
</div>
<div class="content">
<?php print $content?>
</div>
<?php print $links?>
</div>
Файл node.tpl.php и его разновидности
Шаблон страницы определенного типа публикации (на его основе выводится как сама страница публикации, так и список всех публикаций) определяется файлом node.tpl.php, а также файлами вида node-тип_пyбликации. tpl.php (напомним, что наиболее часто используются следующие типы публикаций: book, forum, page, story). Формат этих файлов полностью идентичен, а их назначение заключается в том, чтобы более точно настроить вид страниц для отдельных типов публикаций.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.