Главная/Статьи/Drupal 7: Как я создавал один свой проект без Views
Drupal

Drupal 7: Как я создавал один свой проект без Views

Я задал себе два ключевых вопроса: предоставляет ли Views надежный API и действительно ли нужен этот функционал или это просто стандартная практика. В итоге я отказался от модуля Views при разработке Drupal-проекта.

Вместо Views я выбрал EntityFieldQuery — встроенный в ядро Drupal 7 класс для извлечения объектов на основе условий. Синтаксис данного класса компактен, выразителен и прост в использовании.

Пример базового запроса

$node = menu_get_object();
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
  ->propertyCondition('status', 1)
  ->propertyCondition('type', array('article', 'product', 'blog'))
  ->propertyCondition('uid', $node->uid)
  ->propertyOrderBy('created', 'DESC')
  ->range(0, 5);
$result = $query->execute();

Ключевые особенности

Методы класса обычно связаны (method chaining). Операторы по умолчанию гибко адаптируются к типу данных. EntityFieldQuery автоматически находит таблицы полей и выполняет объединение.

Расширение функционала

Я создал собственный класс EnergyEntityFieldQuery, наследующий EntityFieldQuery, чтобы добавить поддержку Organic Groups и стандартные условия для всех запросов.

Практическое применение

В проекте используется пользовательский интерфейс, позволяющий менять параметры запросов — количество и категорию выводимых нод. Мне удалось решить около 90% случаев использования вывода списков нод с помощью своего расширенного класса.

Для визуализации данных рекомендую модуль Bean как альтернативу блокам Views.