Задание 2
Теперь из сайта, в котором будет находиться ссылка редактирования, давайте выведем все ноды. Сразу приступим к нашей функции, выглядеть все будет так:
php
/**
* Function main_table().
*/
//объявляем функцию
function main_table() {
// создаем $header, где находится массив обозначающий строку,
// ячейки имеют следующее содержимое
$header_table_edit = array(
// первая ячейка содержит текст 'Title'
array('data' => t('Title')),
// вторая ячейка имеет текст 'Link to edit'
array('data' => t('Link to edit'))
);
// делаем запрос к БД где выбираем номера нод и их названия с таблицы node
$query = db_select('node', 'n')
->fields('n', array('nid', 'title'))
->execute()
->fetchAll();
//выводим все наши данные в конструкции foreach
foreach ($query as $record_edit_table) {
//выводим строчку которая содержит
$rows_table_edit[] =
// ячейки
array(
// а в первой ячейке находится запись
array(
// в ячейке у нас находится запись ссылки, где название ноды выводиться
// с помощью $record_table_edit -> title, сама сылка будет у нас иметь такой вид
// «'node/' . $record_table_edit -> nid» - тоесть мы будем переходить на адрес типа:
// «наш_сайт/node/'номер ноды'»
'data' => l($record_table_edit -> title, 'node/' . $record_table_edit -> nid)
),
// вторая ячейка имеет запись ссылки
array(
// ссылка у нас будет со значением 'edit node', при нажатии на нее мы будем
// переходить на адрес типа: «наш_сайт / node / номер_ноды / edit»
'data' => l(t('edit node'), 'node/' . $record_table_edit -> nid . '/edit')
)
);
}
// создаем $caption с строковым значением 'Table for edit nodes'
$caption_table_edit = t('Table for edit nodes');
// создаем функцию theme, которая имеет значение 'table' и ввыводит
return theme('table',
array(
// шапка таблицы находиться в $header_edit_table
'header' => $header_table_edit,
// тело таблицы есть у нас в $rows_edit_table
'rows' => $rows_table_edit,
// и заголовок таблицы будет у нас в $caption_edit_table
'caption' => $caption_table_edit
)
);
}
При запуске скрипта мы увидим следующее:

На сайте есть всего 3 статьи с выведенными названиями, и справа мы видим активную ссылку для редактирования определенного контента.
Дальше давайте сделаем аналогичную таблицу, только справа у нас будет ссылка на удаление ноды. Весь код таблицы будет иметь следующий вид:
php
// у всех переменных в названии будет добавлена цифра 2
$header_table_delete = array(
array('data' => t('Title')),
array('data' => t('Link delete'))
);
foreach ($query as $record_table_delete) {
$rows_table_delete[] =
array(
array(
'data' => l($record_table_delete -> title,'node/' .$record_table_delete -> nid)
),
array(
// путь к удалению ноды
'data' => l(t('delete node'),'node/' .$record_table_delete -> nid . '/delete')
)
);
}
// название таблицы
$caption_table_delete = t('Table for delete nodes');
// здесь в переменную помещаем таблицу с редактированием нод
$table_edit = theme('table',
array('header' => $header_table_edit,
'rows' => $rows_table_edit,
'caption' => $caption_table_edit
)
);
// в этой переменной увидим функцию, которая буде
$table_delete = theme('table', формировать таблицу с ссылкой на удаление ноды
array('header' => $header_table_delete,
'rows' => $rows_table_delete,
'caption' => $caption_table_delete
)
);
// возвращаем сначала таблицу с ссылками редактирования($table_edit),
// дальше выводим таблицу с ссылками на удаление($table_delete).
return "$table_edit" . "$table_delete";
Вид всей таблицы будет такой:

Задание 3
Задача которую нам предстоит выполнить сейчас это создание 2х выпадающих списков. Выпадающий список создается при помощи таких тегов как fieldset, legend и специальных классов CSS формирует выпадающий список. Давайте посмотрим сам скрипт.
drupal_add_library('system', 'drupal.collapse');
данная функция обязательна, поскольку здесь мы загружаем библиотеку, которая поможет подключить нам нужный класс.
php
// создаем переменную для выпадающего списка
// для выведение информации на счет таблицы редактирования нод
$edit_element = array(
// оглавление списка
'#title' => t('Table for edit node'),
// содержимое fieldset-а
'#children' => t('This is main text in fieldset! Table contains link for edit node'),
// список у нас складной
'#collapsible' => true,
// и свернутый
'#collapsed' => true,
// в атрибутах указываем, что надо использовать указанные классы
'#attributes' => array(
'class' => array('collapsible', 'collapsed')
),
);
// помещаем в $fieldset_edit функцию, которая выведет нам поле
$fieldset_edit = theme('fieldset', array('element' => $edit_element));
// здесь все аналогично предыдущему скрипту
$delete_element = array(
'#title' => t('Table for delete node'),
'#children' => t('This is main text in fieldset! Table contains link for delete node'),
'#collapsible' => true,
'#collapsed' => true,
'#attributes' => array(
'class' => array('collapsible', 'collapsed')
),
);
$fieldset_delete = theme('fieldset', array('element' => $delete_element));
// возвращаем наши данные
return "$fieldset_edit" . "$fieldset_delete ";
В браузере мы увидим следующею картину:

Если же мы раскроем списки, то увидим следующее:

Как видно на иллюстрации, списки мы создали - здесь нет ничего сложного. Приступим к последнему заданию.
Задание 4
Нам нужно поместить вновь созданные таблицы в fieldset-списки. Если вы успели выполнить все предыдущие задания, то осилить 4е задание для Вас не составит особого труда. Давайте сразу же посмотрим код, который стоит поменять.
php
$edit_element = array(
'#title' => t('Table for edit node'),
// здесь мы добавляем нашу таблицу редактирование нод
'#children' => t('This is main text in fieldset! Table contains link for edit node') . $edit_table,
'#collapsible' => true,
'#collapsed' => true,
'#attributes' => array(
'class' => array('collapsible', 'collapsed')
),
);
$fieldset_edit = theme('fieldset', array('element' => $edit_element));
$delete_element = array(
'#title' => t('Table for delete node'),
// здесь мы добавляем нашу таблицу удаление нод
'#children' => t('This is main text in fieldset! Table contains link for delete node') . $delete_table,
'#collapsible' => true,
'#collapsed' => true,
'#attributes' => array(
'class' => array('collapsible', 'collapsed')
),
);
$fieldset_delete = theme('fieldset', array('element' => $delete_element));
// и выводим только 2 fieldset-а
return "$fieldset_edit" . "$fieldset_delete";
Результат можно увидеть на следующем скрине:

Вот и все, все задания сделаны.


































































