Таблица views_handler
В контексте Drupal Views, views_handler - это не таблица базы данных, а абстрактный базовый класс PHP, от которого наследуются все обработчики (handlers). Обработчики являются ключевыми строительными блоками модуля Views, отвечающими за определение полей, фильтров, сортировок, отношений и аргументов.
Назначение и роль
Класс views_handler предоставляет общую функциональность для всех типов обработчиков:
| Аспект | Описание |
|---|---|
| Базовая реализация | Определяет основные методы и свойства, общие для всех обработчиков. |
| Интеграция с Views | Обеспечивает стандартный интерфейс для взаимодействия с ядром Views. |
| Управление контекстом | Предоставляет методы для работы с контекстом представления и текущим запросом. |
| Обработка опций | Содержит логику для управления настройками обработчика через UI Views. |
Основные методы класса
Класс views_handler определяет множество методов, но наиболее важными являются:
| Метод | Назначение |
|---|---|
option_definition() |
Определяет опции по умолчанию для обработчика. |
options_form() |
Строит форму настроек обработчика в административном интерфейсе. |
options_validate() |
Выполняет валидацию введенных пользователем настроек. |
options_submit() |
Обрабатывает отправку формы настроек. |
admin_summary() |
Возвращает краткое описание настроек обработчика для сводки Views. |
Типы обработчиков
От views_handler наследуются специализированные классы для различных целей:
| Тип обработчика | Базовый класс | Назначение |
|---|---|---|
| Поля | views_handler_field |
Определяют, какие данные выводятся в результате представления. |
| Фильтры | views_handler_filter |
Ограничивают результаты запроса по определенным критериям. |
| Сортировки | views_handler_sort |
Определяют порядок сортировки результатов. |
| Аргументы | views_handler_argument |
Предоставляют контекстуальные фильтры на основе URL или других параметров. |
| Отношения | views_handler_relationship |
Устанавливают связи между различными таблицами данных. |
Как это работает
Когда создается или редактируется представление, система Views загружает доступные обработчики для каждого типа данных. Каждый обработчик регистрируется в системе через hook_views_handlers() и наследует от views_handler или одного из его подклассов.
При построении запроса Views использует методы обработчиков для добавления соответствующих условий, полей и сортировок в SQL-запрос. Например, обработчик фильтра добавляет условие WHERE, а обработчик сортировки - выражение ORDER BY.
Обработчики тесно связаны с данными, которые они обрабатывают. Для сущностей узлов используются обработчики, работающие с полями и свойствами узлов, для пользователей - с пользовательскими данными и т.д.
Пример создания кастомного обработчика
Для создания собственного обработчика поля необходимо:
// В модуле mymodule.views.inc
function mymodule_views_handlers() {
return array(
'info' => array(
'path' => drupal_get_path('module', 'mymodule') . '/includes/views/handlers',
),
'handlers' => array(
'mymodule_views_handler_field_custom' => array(
'parent' => 'views_handler_field',
),
),
);
}
// В файле includes/views/handlers/mymodule_views_handler_field_custom.inc
class mymodule_views_handler_field_custom extends views_handler_field {
function render($values) {
// Кастомная логика рендеринга поля
return 'Custom: ' . check_plain($values->{$this->field_alias});
}
}
Смотрите также
-
таблицу
views_view,
которая хранит определения представлений -
таблицу
views_display,
которая содержит настройки дисплеев представлений -
таблицу
views_cache,
которая управляет кэшированием представлений -
таблицу
views_plugin,
которая хранит информацию о плагинах Views