В Drupal 7 API есть целый раздел, который посвящен темизации созданного сайта. Все без исключения элементы сайта должны пройти процесс темизации. Но для начала нужно настроить саму темизацию, а с т.з. программирования, что бы ни делал программист, почти все делается с помощью функций. Самая основная из них - это функция theme(). Существует множество функций, которые упрощают темизацию также и в Drupal 7. Мы рассмотрим только 2 из них:
- theme_table() – функция для формирования таблицы.
- theme_fieldset() – функция для выпадающего списка.
Наши задания будут заключаться в следующем:
Сделать таблицу со статическими данными размером 3/3 с помощью theme_table()
- Организовать вывод всех статей сайта содержащих следующие поля: название статьи (в активной ссылке) и ссылка на редактирование статьи. Сделать аналогичную таблицу, только рядом должна присутствовать ссылка на удаление статьи.
- Вывести 2 выпадающих списка с помощью theme_fieldset(), где в списке 1 выводиться объяснение к таблице касающиеся редактирования нод, список 2 выводит информацию о таблице удаления нод.
- Сделать еще 2 выпадающих списка, в которых должны находиться наши таблицы.
Задание 1
Начнем с theme_table().
Давайте создадим файл нашего модуля, у нас будет файл table_page.module: для начала нам нужно создать страничку, на которой будет размещаться наша таблица. Для того, чтобы создать страницу, мы используем hook_menu, в нашем случае это все будет выглядеть так:
php
/**
* Implements hook_menu().
*/
// объявление функции
function table_page_menu() {
// создаем переменную, которая указывает, что путь страницы будет «наш_сайт/ table»,
// в странице есть следующие параметры
$items['table'] = array(
// это название страницы
'title' => t('Page with table'),
// функция, которая формирует данные для таблицы
'page callback' => 'main_table',
// и доступ, он у нас будет конечно же открыт.
'access arguments' => array('TRUE'),
);
// не забываем возвратить нашу переменную
return $items;
}
/**
* Function main_table().
*/
// создаем функцию для вывода данных на созданную страницу
function main_table() {
// пока что оставим страничку пустой.
return '';
} Дальше давайте вспомним, что таблица в html начинается с тегов table, дальше в таблице формируются строки, с помощью тега tr, затем мы создадим в строке ячейки, что выполняется с помощью тега td. Именно так мы можем сформировать самую простую таблицу на веб-странице. Хотя формировать нам ничего не придется, поскольку за нас работать с тегами будет функция theme_table(), мы же займемся самой функцией.
У каждой правильной таблицы должна быть «шапка», т.н. header. $header – будет состоять из 1 строки, и 3 ячеек в этом строке.
Делается все так:
php
// создаем переменную, которая содержит массив
$header = array(
// дальше создаем еще массив, где содержится данные перовой ячейки
array('data' => t('Header cell1')),
// второй ячейки
array('data' => t('Header cell2')),
// и третей ячейки
array('data' => t('Header cell3'))
); Шапку таблицы мы создали, теперь давайте перейдем к телу таблицы. Там мы создадим 2 строчки, по 3 ячейки в каждой.
php
// создаем первую строчку
$row [] = array(
// вывод 1 ячейки в 1 строчке
array('data' => t('Row 1 – Cell 1')),
// вторая ячейка
array('data' => t('Row 1 – Cell 2')),
// третья ячейка
array('data' => t('Row 1 – Cell 3'))
);
//вывод второго ряда
$row [] = array(
// ячейка 1
array('data' => t('Row 2 – Cell 1')),
// ячейка 2
array('data' => t('Row 2 – Cell 2')),
// ячейка 3
array('data' => t('Row 2 – Cell 3'))
); Теперь, когда с данными мы закончили, нужно правильно указать функции, которые подлежат выведению. В нашем случае функция должна иметь следующий вид:
php
// используем функция theme и задаем ей параметр table
theme('table',
//создаем массив для данных
array(
// значение header будет у нас находиться в $header
'header' => $header,
// значение rows будет у нас выводиться из $rows
'rows'=> $rows
)
); Теперь наш код будет иметь следующий вид:
php
/**
* Implements hook_menu().
*/
function table_page_menu() {
$items['table'] = array(
'title' => t('Page with table'),
'page callback' => 'main_table',
'access arguments' => array('TRUE'),
);
return $items;
}
/**
* Function main_table().
*/
function main_table() {
// создаем переменную, которая содержит массив
$header = array(
// дальше создаем еще массив, где содержится данные перовой ячейки
array('data' => t('Header cell1')),
// второй ячейки
array('data' => t('Header cell2')),
// и третей ячейки
array('data' => t('Header cell3'))
);
// создаем первую строчку
$rows[] = array(
// вывод 1 ячейки в 1 строчке
array('data' => t('Row 1 – Cell 1')),
// вторая ячейка
array('data' => t('Row 1 – Cell 2')),
// третья ячейка
array('data' => t('Row 1 – Cell 3'))
);
//вывод второго ряда
$rows[] = array(
array('data' => t('Row 2 – Cell 1')),
array('data' => t('Row 2 – Cell 2')),
array('data' => t('Row 2 – Cell 3'))
);
return theme('table', array('header' => $header, 'rows'=> $rows));
} Визуальный вид будет такой:









































































