В 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)); }
Візуальний вигляд буде наступний: