В одной из прошлых заметок в модуле 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' можно задать для этой таблицы
уникальный набор стилей. Ну а как добавить таблицу стилей к модулю на этом сайте уже писалось.