Главная

Корректное отображение избранного в Drupal с модулем Flag и Views Flag Refresh

02-05-2025

В процессе разработки сайта на Drupal 10 с функциональностью добавления материалов в "Избранное" часто возникает проблема: кнопка работает, но количество избранных материалов отображается некорректно, особенно для анонимных пользователей. В этой статье я поделюсь решением, которое проверено на нескольких сайтах и полностью устраняет эту проблему.

Суть проблемы

Модуль Flag позволяет пользователям помечать сущности (например, статьи или объявления) как избранные. Однако, при использовании Views для подсчёта количества избранных материалов возникают баги:

  • Число отображается неправильно (например, 4, 10 или даже 235 при одном элементе).
  • Анонимные пользователи не видят корректное число избранного.
  • После добавления/удаления флага интерфейс не обновляется.

Решение: модуль Views Flag Refresh

Решение оказалось простым и элегантным — достаточно установить и включить модуль Views Flag Refresh, который отвечает за корректное обновление View через AJAX при срабатывании флага. После активации этого модуля:

  • Счётчик избранного начинает обновляться сразу после клика.
  • Работает как для зарегистрированных пользователей, так и для гостей (анонимных).
  • Никакого дополнительного кода или JavaScript-хака не требуется.

Шаги по установке

  1. Установите основной модуль Flag: composer require drupal/flag:^4.0@beta
  2. Установите Views Flag Refresh: composer require drupal/views_flag_refresh
  3. Активируйте оба модуля через UI или Drush: drush en flag views_flag_refresh
  4. В представлении, которое отвечает за вывод избранного, добавьте флаг как связь и включите агрегацию (если нужно).
  5. Убедитесь, что отображение построено через Views, и блок добавлен в нужное место темы.

Итоги

С этим решением функциональность "Избранное" в Drupal начинает работать стабильно и корректно. Views Flag Refresh — незаменимый модуль, если вы хотите, чтобы пользовательский опыт был точным и отзывчивым.

Совет на будущее: при любом проекте с модулем Flag сразу включайте Views Flag Refresh — это сэкономит кучу времени.

Похожие статьи