Як зв’язати сутність з модулем Views в Drupal
У попередньому уроці я розповів, як створити свою сутність. Сьогодні я покажу, як зв'язати сутність з модулем Views. Не забуваймо скачати його, якщо ще не зробили цього. Для вирішення цього завдання існує два способи і зараз ми їх розглянемо.
Відразу зазначу, що цей спосіб підходить лише якщо сутність створена за допомогою модуля Entity API. У хуку hook_entity_info() для нашої сутності встановлюємоviews controller class :
Хук став виглядати так:
Ось і все, чистимо кеш і можемо створювати завірюхи.
Спочатку імплементуємо хук hook_views_api():
Далі в корені модуля створюємо каталогviews, а всередині нього файл product.views.inc. Відкриваємо цей файл та імплементуємо у цьому файлі хук hook_views_data(). У цьому хуку ми опишемо доступні поля, фільтри, сортування та зв'язки:
На що тут варто звернути увагу – на обробники. У даному прикладі у нас використовуються стандартні в'юзовські та кілька самописних.
Обробники Views
- views_handler_relationship;
- views_handler_field_date;
- views_handler_field_user;
- views_handler_argument_string;
- views_handler_filter_date;
- views_handler_filter_user_name;
- views_handler_filter_numeric;
- views_handler_filter_string;
- views_handler_sort;
- views_handler_sort_date.
Самописні обробники
- product_handler_field_product;
- product_handler_field_product_status;
- product_handler_field_product_operations;
- product_handler_argument_product_id;
- product_handler_filter_product_status.
Наступним кроком буде написання наших обробників. У каталозіviews нашого модуля створюємо каталогhandlers. У цьому каталозі длякожного оброблювача створюємо файл, назва якого збігається з назвою оброблювача:
- product_handler_field_product.inc
- product_handler_field_product_status.inc
- product_handler_field_product_operations.inc
- product_handler_argument_product_id.inc
- product_handler_filter_product_status.inc
Далі відкриваємо файл product.info і додаємо до нього наступні рядки:
От і все. Тепер нашасутність пов'язана з Views.