Як зв’язати сутність з модулем 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.