Категория:
Опубликовано:

Сортируем материалы как термины

Draggable view

Я думаю каждый Drupal'ер знаком с интерфейсом "перетаскивания" блоков, меню или терминов реализуемых Друпалом.

Очень удобно, правда?

Было бы неплохо использовать подобный функционал для ранжирования материалов.

В продолжении поста смотрим как это можно реализовать.

Настройка для администратора

Вся эта "красота" работает благодаря Drag'n'Drop библиотеке, зашитой в ядро Drupal. Вот нашел её форк на гите: tabledrag.js.

В этом примере мы рассмотрим вариант использования подобного интерфейса с помощью модуля DraggableViews.

Предполагаю Вы уже скачали и установили этот модуль, и поэтому, переходим дальше.

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

Добавляем поле "NID", скрываем его и выводим первым в списке полей.

Добавляем поле "Draggableviews: Содержимое", со стандартными настройками:

Draggableviews - Содержимое

Теперь добавим в критерии сортировки "Draggableviews: Вес":

Добавление критерия сортировки

Настройки оставляем как есть:

Draggableviews - Вес

Сохраняем представление. Скриншот готового представления.

Можем перейти на страницу представления, перетащить материалы в нужные места и сохранить. Материалы будут выводится в том порядке, в котором мы их сохранили.

В этом представлении администратор сможет устанавливать порядок вывода содержимого.

Очень важно! Нельзя использовать фильтры и пагинатор в представлении сортировки, иначе модуль не будет сохранять результаты правильно.

Представление для пользователей

Мы можем вывести материалы в этом же порядке и в других представлениях.

Для этого создаем представление по материалам, с нужными нам настройками, или просто заходим в уже имеющееся представление, содержимое которого нужно вывести в "нужном" порядке.

В критериях сортировки добавляем, уже знакомый нам "Draggableviews: Вес". В его настройках выбираем созданное в первом шаге представление в качестве основной сортировки:

Выбор источника сортировки

Обязательно нужно сделать эту сортировку первой в списке!

Все, можно сохранять представление и смотреть результат.

Использование пользовательских полей

Очень полезная функция данного модуля заключается в возможности использования собственного поля в качестве источника веса.

Таким образом, можно вручную задавать вес материала, при его редактировании.

Для этого нужно просто добавить материалу поле типа "Целое число" (Integer):

Поле - Вес

В представлении (для администратора) заменить сортировку "Draggableviews: Вес" на сортировку по созданному полю.

Теперь, в настройках полей представления, в поле "Draggableviews: Содержимое", меняем сортировщик (Sort handler) с Native на FieldAPI. В качестве поля выбираем добавленное до этого в сортировку.

Использование поля для сортировки

Ну, а в качестве сортировки представления для пользователей, просто указываем наше поле веса, вместо "Draggableviews: Вес".

Если у Вас возникли вопросы, замечания, предложения или просто благодарность - пишите в комментариях.
Делитесь полезными материалами в социальных сетях.

Комментарии

Спасибо за отличную подробную статью. DraggableViews мне всегда казался каким через чур мудреным, я использовал модуль Weight, в котором нет сортировки перетаскиванием. Попробую DraggableViews.