Темизация вывода в Drupal
В одной из прошлых заметок в модуле Drupal была создана страница. При создании страницы мы просто вывели кусок текста на страницу и всё. Можно было бы конечно немного её разнообразить всякими разными тегами и стилями. Для нового года такая красота в самый раз, но для обычного сайта - как-то не очень.
Ведь приходится выводить не только текстовую информацию, но структурированную. Такую как:
- списки
- таблицы
- элементы форм
- и пр.
И все эти элементы необходимо выводить не как-нибудь, а в соответствии с настройками текущей темы сайта, т.е. их необходимо темизировать.
Тема темизации достаточно обширная. На одном ее конце стоят создание темы для сайта, или как минимум, ее редактирование. На другом - вывод отдельных элементов в соответствии с темой сайта. О последнем и поговорим сейчас.
Функции темизирующие вывод материала в Drupal начинаются с theme_. После знака подчеркивания идет название элемента который темизируется данной функцией. Например: theme_table - выводит таблицу. theme_button - кнопку формы.
Список этих функций можно посмотреть на странице посвященной темизации Drupal.
Кроме того, используя с помощью хука theme можно создавать свои функции темизации.
Рассмотрим теперь начала темизации на практике. Зададим функцию, обеспечивающую вывод на экран списка и таблицы, следующим образом:
<?php
function theme_example_page(){
$output='<p>'.'На этой странице будут продемонстрированы некоторые возможности правильной темизации страницы модуля'.'</p>';
$output.=theme_item_list(array('hook_help', 'hook_menu','hook_theme'),'Хуки Друпал');
# Массив с содержимым заголовка таблицы
$header=array('ПО','Автор');
# Массив с содержимым нашей таблицы
$rows=array(array('Linux','Линус Торвальдс'),array('Drupal','Дрис Байтаерт'),array('PHP','Расмус Лердорф'),array(array('data'=>'Всех не перечислишь...','colspan'=>2)));
$output.=theme_table($header,$rows,array(),'ПО и его авторы');
return $output;
}
?>Рассмотрим что-же мы вывели:
- Название страницы. Оно определено еще в хуке меню и друпал вывел его сам, без нашей помощи.
- Просто текст. Здесь всё ясно.
- Списки. Используется функция theme_item_list(). Первый параметр: массив со списком строк. Второй - это заголовок списка. Хотя и устанавливается с помощью тега h3, который к самому списку формально отношения не имеет. Дальше идут необязательные параметры, задающие тип списка: 'ul' - по умолчанию или 'ol' - цифровой и его параметры. Подробнее можно прочитать в справке.
- Таблицы. Создает заголовок, разукрашивает чередующиеся строки в разные цвета и делает некоторые другие вещи. У данной функции есть и другие достоинства - например при работе с БД можно устанавливать параметры сортировки данных в колонках. Но пока об этом не будем. Рассмотрим параметры используемые при создании таблицы:
- Массив $header, содержащий поля заголовка. В данном случае приведен пример его простейшего использования.
- Массив $rows, содержащий ячейки таблицы. Также может быть различной сложности, с указанием атрибутов каждой ячейки. Ячейки в первых трёх строках не отличаются сложностью и поэтому соответствующие элементы массива хранят содержимое ячейки. Но к последней ячейке потребовалось добавить атрибуты и поэтому элементом массива стал новый массив. В этом массиве элемент с ключом 'data' содержимое ячейки, а элемент остальные элементы являются атрибутами ячейки. Ключ - это название атрибута, значение элемента массива - значение атрибута. В примере 'colspan'=>2 будет атрибутом ячейки colspan="2". В результате в нижней строке получим объединение ячеек.
- Пустой массив. Предназначен для задания атрибутов таблицы, примерно также как это было сделано для ячейки. В данном случае он пустой, т.е. таблица выводится с параметрами по умолчанию. Если же нужно отобразить её как-нибудь по уникальному то можно или задать атрибуты в этом массиве или же изменить ее свойства с помощью таблицы стилей. Добавив в этот массив 'id'=>'this_table_css' можно задать для этой таблицы уникальный набор стилей. Ну а как добавить таблицу стилей к модулю на этом сайте уже писалось.
- Заголовок таблицы. Тут я думаю всё ясно.
Файл с примером получившегося модуля прикреплён ниже.
| Вложение | Размер |
|---|---|
| theme_example.zip | 1.41 кб |

Комментарии:
Re: Темизация вывода в Drupal
Опубликовано LuxMan (не проверено) в Сб, 25/04/2009 - 02:20.И это все?
Re: Темизация вывода в Drupal
Опубликовано Babuin (не проверено) в Чт, 14/05/2009 - 20:19.А ты что ждал? Дальше сам додумывай :) или тебе все на тарелочке нужно?

Re: Темизация вывода в Drupal
Опубликовано Гость (не проверено) в Пнд, 04/05/2009 - 15:59.Спасибо вам за статью. Почему-то дельных материалов по темизации очень мало в Рунете :(
Отправить комментарий