Дополняем результаты views

Пример того, как можно дополнить результаты views в Drupal 9/10.

Задача — вывести для статьи блок со связанными публикациями. В начале нужно было просто выводить последние статьи того же типа, а потом у заказчика возникло желание переопределять выдачу, задавая часть статей вручную для каждой публикации.

Опускаю саму вьюху, рассмотрим лишь реализацию хука hook_views_post_execute(). Он выполняется когда результаты запроса views уже получены и мы можем их изменить.

Хук делает слудующее:

  • Проверяет контекст — является ли текущая страница нодой.
  • Пытается получить содержимое поля field_news_related, в котором пользователь задаёт вручную статьи.
  • Переписывает заданными вручную статьями результаты выдачи.

По умолчанию связанные статьи выбираются, например, из последних новостей с использованием фильтра, например, категории новости (все условия определяются в самой views и нам не важны).

Но если пользователь определил какие то связанные статьи вручную, то они будут поставлены в полученный список, замещая первые элементы.

В шаблоне вам нужно лишь вызвать это представление вот так (я использую модуль twig_tweak):

С помощью написанного нами хука, указанные редактором статьи будут вставлены в результаты.

Мало букафф? Читайте есчо !

Убираем пустые категории из фильтра во views

Сентябрь 13, 2023 г.

Весьма распространённый случай, когда в качестве exposed filter используется поле, связанное с таксономией. Так вы получаете набор опций в фильтре для своего представления, которое доступно пользователю. Также весьма часто некоторые дополнительные ...

Читать

Ошибка: Migration is busy with another operation

Апрель 19, 2024 г.

При отладке миграций в Drupal могут возникать состояния, когда миграция не прошла по какой то причине (ошибке) и подвисла в состоянии отличном от Idle. ...

Читать

Транслитерация имени файла при создании медиа entity программно в Drupal

Май 21, 2023 г.

При импорте изображений возникает задача транслитерации. Картинки, например, могут содержать буквы национальной кодировки (кириллицы) и/или иметь несовместимые с файловой системой сервера символы. Drupal (начиная с 8.2) объявляет специальный интерфейс, ...

Читать

Ошибка в Drupal: once is not a function

Май 8, 2023 г.

В Drupal 9/10 нет jQuery плагина once(), потому при использовании этой функции вы увидите сообщение о том, что once - не является функцией. Плагин удобен, но его не сложно заменить в коде буквально парой вставок. Он работает по следующему алгоритму ...

Читать
 

Комментарии к «Дополняем результаты views»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: