Сегодня мы чуть подробнее разберем функции theme в Drupal 7, а именно, я вам расскажу, где они нам могут пригодиться и как с ними работать в дальнейшем. В большинстве своем функции theme, предназначены для формирования HTML разметки для каких-либо элементов сайта, - это может быть таблица, списки, изображения и многое другое.
Список функций, которые будет рассматривать:
- theme_item_list
- theme_disable
- theme_enable
- theme_feed_icon
- theme_get_registry
- theme_get_setting
- theme_html_tag
- theme_image
- theme_indentation
- theme_breadcrumb
- theme_link
- theme_links
- theme_mark
- theme_more_help_link
- theme_more_link
- theme_progress_bar
- theme_status_messages
- theme_table
- theme_tablesort_indicator
- theme_username
- theme
Данная функция возвращает HTML разметку для списков и вложенных списков.
theme_item_list($variables)
где,
- $variables['items'] – массив с элементами списка
- $variables['title'] - заголовок списка
- $variables['type'] – тип списка. Может быть как маркированный список (ul – используется по умолчанию), так и ol
- $variables['attributes'] – атрибуты списка, например класс CSS
<?php $title = 'Theme Item List Example'; // Заголовок списка $type = 'ol'; // Тип списка 'class' => 'newclass', ); print theme_item_list(array('items' => $items, 'title' => $title, 'type' => $type, 'attributes' => $attributes));
Данная функция отключает шаблон (тему) на вашем сайте. В качестве значения принимает массив с именами шаблонов, которые должны быть отключены.
theme_disable($theme_list)
<?php theme_disable($theme_list);
Данная функция противоположна функции theme_disable, - включает шаблон (тему) на вашем сайте. В качестве значения принимает массив с именами шаблонов, которые должны быть включены.
theme_enable($theme_list)
<?php theme_enable($theme_list);
Возвращает HTML разметку для РСС подписки. В качестве значения принимает массив
theme_feed_icon($variables)
где,
- $variables['url'] – путь до изображения
- $variables['title'] – title подписки
<?php $variables['url'] = ''; // Путь до изображения $variables['title'] = 'New Feed Title'; // Tille подписки print theme_feed_icon($variables);
Данная функция формируем массив реестра тем на вашем сайте.
theme_get_registry($complete = TRUE)
где,
- $complete – булевское значение, если TRUE (по умолчанию), то будет сформирован массив всего списка реестра
<?php $registry = theme_get_registry($complete = TRUE);
Получает какое-либо значение текущей темы, а так же глобальные настройки тем. Это может быть текст, число или булевское значение. В качестве значений принимает имя настройки, и в качестве необязательного параметра название темы
theme_get_setting($setting_name, $theme = NULL)
где,
- $setting_name – имя настройки
- $theme – имя темы
<?php $settheme = theme_get_setting('logo');
Возвращает HTML разметку для HTML тега с указанными атрибутами.
theme_html_tag($variables)
где,
- $variables['element']['#tag'] – необходимый HTML тэг
- $variables['element']['#attributes'] – атрибуты тега, например класс CSS
- $variables['element']['#value'] – текст внутри тега
- $variables['element']['#prefix'] – значение перед текстом внутри тега
- $variables['element']['#suffix'] – значение после текста внутри тега
<?php $variables['element']['#tag'] = 'h4'; // Тег, для которогог будет создана разметка $variables['element']['#value'] = 'Text Strong'; // Текст (значение) внутри тега $variables['element']['#value_prefix'] = '<div>Текст, до элемента</div>'; // Префикс перед текстом $variables['element']['#value_suffix'] = '<div>Текст, после элемента</div>'; // Суффикс после текста print theme_html_tag($variables);
Возвращает HTML разметку для изображения. В качестве значения принимает массив
theme_image($variables)
где,
- $variables['path'] – путь до изображения
- $variables['width'] – ширина изображения
- $variables['height'] – высота изображения
- $variables['alt'] – alt изображения
- $variables['title'] – title изображения
- $variables['attributes'] – массив с атрибутами
<?php 'path' => 'img/img.jpg', // Путь до изображения 'width' => 359, // Ширина изображения 'height' => 224, // Высота изображения 'alt' => 'Test Image', // Alt 'title' => 'Test Image', // Title 'data-img' => 1, ), ); print theme_image($variables);
Возвращает HTML с отступом DIV. В качестве значения принимает массив
theme_indentation($variables)
где,
- $variables['size'] – необходимое кол-во DIV с отсупом
<?php 'size' => 10, ); print theme_indentation($variables);
Возвращает HTML хлебных крошек. В качестве значения принимает массив
theme_breadcrumb($variables)
где,
- $variables['breadcrumb'] – массив значений
<?php 0 => '<a href="#" title="Home">Home</a>', 1 => '<a href="#" title="Link">Link</a>', 2 => 'More Link', ); print theme_breadcrumb($variables);
Возвращает HTML разметку для ссылки. В качестве значения принимает массив
theme_link($variables)
где,
- $variables['path'] – адрес ссылки
- $variables['text'] – текст ссылки
- $variables['options'] – опции ссылки, например добавление аттрибутов
<?php 'path' => 'http://home.ru', // href ссылки 'text' => 'Link to front page', // текст ссылки 'html' => FALSE, ), ); print theme_link($variables);
Возвращает HTML разметку для списка ссылок. В качестве значения принимает массив
theme_links($variables)
где,
- $variables['links'] – массив со списком ссылок
- $variables['attributes'] – атрибуты списка
- $variables['heading'] – заголовок списка
<?php 'title' => 'Link 1', // Текст ссылки 'href' => 'http://drupalfly.ru', // Адрес ссылки 'html' => TRUE, // Если TRUE, то ссылка будет пропущена через check_plain ), ), 'title' => 'Link 2', 'href' => 'http://drupalfly.ru', 'html' => TRUE, ), ), ); 'text' => 'One more', // Текст заголовка 'level' => 'h2', // Тег для обрамления заголовка 'class' => 'One more class', // Класс CSS заголовка ); print theme_links($variables)
Возвращает HTML маркер для нового или обновленного контента. В качестве значения принимает массив,
theme_mark($variables)
где,
-
$variables[‘type’] – тип метки. Может принимать следующие значения (константы):
- MARK_NEW – новый контент
- MARK_UPDATED – контент обновлен
- MARK_READ – контент прочтен
Возвращает разметку HTML ссылки, для получения справочной информации
theme_more_help_link($variables)
где,
- $variables['url'] – адрес ссылки
<?php $variables['url'] = 'http://drupalfly.ru'; print theme_more_help_link($variables);
Возвращает разметку HTML ссылки, которая используется в блоках и нодах (more). В качестве значения принимает массив
theme_more_link($variables)
где,
- $variables['url'] – адрес ссылки
- $variables['title'] = title ссылки
<?php 'url' => 'http://drupalfly.ru', 'title' => t('Читать дальше'), ); print theme_more_link($variables);
Возвращает HTML разметку прогресс бара. Её вы можете наблюдать при использовании пакетной обработки Batch. В качестве значений принимает массив
theme_progress_bar($variables)
где,
- $variables['percent'] – процент прогресса
- $variables['message'] – сообщение, которое будет отображать при обработке, например пакетных операция
<?php 'percent' => 50, 'message' => 'Идет процесс обработки', ); print theme_progress_bar($variables);
Возвращает разметку HTML сообщений на сайте. Вызывается в связке с drupal_set_message()
theme_tableВозвращает HTML разметку таблицы. В качестве значений принимает массив,
theme_table($variables)
где,
- $variables['header'] – массив с заголовками таблицы
- $variables['rows'] – массив с полями таблицы
- $variables['attributes'] – атрибуты таблицы
- $variables['caption'] – caption таблицы
- $variables['colgroups'] – colgroups таблицы
- $variables['sticky'] – булевское значение, определяет фиксирование заголовков таблицы (thead) при прокрутке
- $variables['empty'] - текст, который будет отображаться при пустых полях таблицы
<?php 'align' => 'center', ), ), ); 0 => 'Title', 1 => 'Description', ), 0 => 'Row Title 2', 'data' => 'Row Description 2', ), ), ), ), ), 'caption' => 'Example table', // текст для caption 'colgroups' => $colgroup, // параметры для тега colgroups 'sticky' => FALSE, // булевское значение, определяет фиксирование заголовков таблицы (thead) при прокрутке 'empty' => 'Таблица пуста', // текст, который будет отображаться при пустых полях таблицы ); print theme_table($variables);
Возвращает HTML разметку для иконки сортировки. В качестве значений принимает массив,
theme_tablesort_indicator($variables)
где,
-
$variables['style'] – тип сортировки. В зависимости от типа будет сформирован та или иная иконка и принимает следующие значения:
- asc – сортировка по возрастанию
- desc – сортировка по убыванию
<?php $variables['style'] = 'asc'; print theme_tablesort_indicator($variables);
Возвращает HTML разметку пользователя. В качестве значений принимает массив,
theme_username($variables)
где,
- $variables['account'] – объект пользователя
- $variables['name'] – имя пользователя
- $variables['link_path'] – адрес ссылки
- $variables['link_options'] –атрибуты ссылки
- $variables['extra'] –экстра для текста ссылки
- $variables['attributes_array'] - Атрибуты, если адрес ссылки не существует
<?php global $user; 'account' => $user, // Объект пользователя 'name' => 'Pantey ', // Имя пользователя 'link_path' => 'http://drupalfly.ru', // Адрес ссылки 'extra' => '(admin)', // Экстра для текста ссылки ), ); print theme_username($variables);
Данная функция на основе переданного ей значения, сканирует реестр тем и направляет его в соответствующую функцию тем. В качестве значения принимает название темы и массив со значениями,
где,
- $hook – название темы, например table
- $variables – массив со значениями, могут изменяться в зависимости от названия темы
<?php
Хочу заметить, что данную функцию не рекомендуется использовать в ее чистом виде. Вместо нее следует использовать drupal_render
Так пример использования функций темизации примет следующий вид:
<?php '#theme' => 'item_list', '#items' => $items, '#type' => 'ul', '#title' => 'Item List Example', ); print drupal_render($build);
Комментарии (2)
Спасибо большое за обзор. Очень пригодилось.
а можно ли как нибудь на создавать многоуровневые списки с помощью этого ?