Обзор возможностей модуля Entityqueue

Многие наверняка сталкивались или хотя бы слышали о модуле Nodequeue, который позволяет собирать списки из нод опубликованных на сайте . Затем эти списки можно использовать для вывода их к примеру с помощью модуля views. Для пользователей и терминов таксономии существовали аналогичные модули - User Queue и Term Queue.

Но иногда бывает необходимость создавать подобные списки для нескольких сущностей или же нужен такой же функционал для сущностей, созданных контрибными модулями. Для этих целей был создан универсальный вариант в виде модуля Entityqueue. Он на данный момент находится в alpha стадии , но однако серьезных проблем при его использовании не было замечено .

Entityqueue зависит от следующих модулей:

Модуль создает свою сущность entityqueue_subqueue , которая собственно и реализует очереди . Сущности прикрепляются к создаваемым очередям с помощью поля entityreference. Модуль создает для entityreference поля виджет "Draggable table" для удобного прикрепления сущностей к очередям и удобного drag-and-drop изменения их порядка расположения. Для каждой используемой сущности создается свое поле . К примеру для нод создается eq_node поле , для юзеров - eq_user. При создании новой очереди программно добавляется инстанс соответствующего поля.

Очереди возможно делать двух типов : Simple queue и Multiple subqueues. Simple queue представляет собой простую одиночную очередь , а Multiple subqueues включат в себя набор очередей.

Благодаря использованию модулем Ctools плагинов есть возможность клонировать и экспортировать создаваемые очереди.

Для примера создадим простую очередь , которая будет содержать ноды определенного типа.
Перейдем на страницу по адресу /admin/structure/entityqueue/add, введем название добавляемой очереди , выберем Simple queue. Далее выбираем тип прикрепляемой сущности, а также ее бандл .В данном примере для нод бадлом служит тип материала.
Также возможно во вкладке "Queue properties" указать минимальное и максимальное количество элементов в очереди.

entityqueue1.png

entityqueue3.png

После сохранения очереди мы оказываемся на странице /admin/structure/entityqueue , где выводится список всех созданных очередей. Каждую очередь здесь возможно настроить, удалить, клонировать, экспортировать.

entityqueue2.png

Далее выбираем напротив созданной очереди пункт "Edit items" и добавляем в очередь материалы.

entityqueue4.png

После того , как очередь создана и в нее добавлены связанные с ней сущности , их можно вывести с помощью views. Добавляем новое представление , выбираем для показа материалы и сохраняем его .
Далее , чтобы выбрать только те материалы, которые прикреплены к очереди, нужно добавить взаимосвязь "Entityqueue: Материал Queue ". При этом чтобы представление выводило только материалы из очереди нужно выбрать "Эта связь обязательна". Также нужно отметить "Ограничить одной или несколькими очередями (рекомендуется)" и выбрать имя очереди.

entityqueue5.png

Иногда возникает необходимость вывести все материалы , а материалы из очереди , чтобы находились сверху и при этом сохранился их порядок определенный при создании очереди. Для этого во взаимосвязи убираем чекбокс "Эта связь обязательна" и добавляем сортировку Entityqueue: Queue Name с сортировкой по убыванию(DESC) , а затем Entityqueue: Материал Queue Position с сортировкой по возрастанию(ASC).

entityqueue6.png

Единственным недостатком для меня этого модуля по сравнению с Nodequeue является то , что в нем нельзя на странице с нодой добавлять ее в очередь. Однако это все с лихвой восполняется возможностью создавать очереди для всех сущностей.