Новая концепция сущностей (Entity) в Drupal 7

Опубликовано: 20.05.2017

Собственно изначально эта статья писалась с целью публикации и получения инвайта на хабр, но подождав пару дней и посмотрев что среди статей в песочнице за число N моей нет, в меня закралось подозрение, что по каким-то причинам она даже не прошла премодерацию. Что ж, может хоть тут она кому-то будет полезна.

Концепция сущностей (Entity), которая будет рассматриваться в данной статье является одной из новинок, представленных в Drupal 7. Для того чтобы осознать всю новизну предлагаемого подхода, следует сделать небольшой экскурс в историю и вспомнить, как все было в Drupal 6.

Что такое, с чем едят?

Все модули, написанные под Drupal условно можно разделить на две категории. Первая - модули, которые фактически не объявляют новых типов данных и работают с данными уже где-то определенными и хранимыми. Например модуль lightbox2 позволяет изменить представление изображений на сайте, а модуль devel предоставляет различные утилиты, полезные разработчику. И хотя модуль devel сохраняет некоторую информацию в базе данных (время выполнения sql запросов, например) фактически это нельзя назвать полноценной моделью данных.

Вторая категория - это модули которые позволяют создавать новые типы объектов, определяют новые модели данных. К таким модулям, например относятся модуль webform (позволяет создавать формы опросов), а также входящий в ядро модуль user (создавать (регистрировать) новых пользователей, выполнять с ними различные операции).

Когда у Вас, как у разработчика, модуля появляется необходимость в объявлении нового типа данных, у Вас есть два варианта. Первый вариант - определить Ваш тип данных как новый тип материала (node type). Второй вариант - создавать все с нуля. У обоих подходов есть свои преимущества и недостатки. Понятно, что второй вариант является более гибким и не накладывает на Вас практически никаких ограничений в реализации. Первый же вариант является более удобным и быстрым в исполнении за счет готовых средств, предоставляемых Node API.

IRC (Internet Relay Chat)
rss