Урок - Отображение групп полей Drupal 7. Функция theme_fieldset().

Главная » Курсы » Курс Drupal 7, Разработка модулей » Урок - Отображение групп полей Drupal 7. Функция theme_fieldset().

Обучающий онлайн курс
Drupal 7, Разработка модулей

Лицензия: Копирование запрещено.

В Drupal 7 API есть целый раздел, который посвящен темизации сайта. Все элементы сайта без исключения должны пройти процесс темизации. Но для начала нужно настроить саму темизацию. Если смотреть со стороны программирования, то почти все делается с помощью функций. Самая основная функция theme(). Существует множество функций, которые упрощают темизацию Drupal 7. Мы рассмотрим только 2 из них, эти функции:

  • theme_table() – функция для формирования таблицы.
  • theme_fieldset() – функция для выпадающего списка.

 

Наши задания:

  1. Сделать таблицу с статическими данными размером 3/3 с помощью theme_table() 
  2. Организовать вывод все статей сайта с такими полями как: название статьи(в активной ссылке) и ссылка на редактирование статьи. Сделать аналогичную таблицу, только рядом должна присутствовать ссылка на удаление статьи. 
  3. Вывести 2 выпадающих списка с помощью theme_fieldset(). Где в 1 списке выводиться объяснение к таблице про редактирование нод, 2 список выводит информацию о таблице удаления нод. 
  4. Сделать еще 2 выпадающих списка, в которых должны находиться наши таблицы.


Задание 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 задание для Вас не составить особого труда. Давайте сразу же посмотрим код, который стоит поменять.

 

$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";  

?>

 Результат можете увидить на следующем скрине:

 

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