В процессе разработки сайта на Drupal 10 с функциональностью добавления материалов в "Избранное" часто возникает проблема: кнопка работает, но количество избранных материалов отображается некорректно, особенно для анонимных пользователей. В этой статье я поделюсь решением, которое проверено на нескольких сайтах и полностью устраняет эту проблему.
Суть проблемы
Модуль Flag позволяет пользователям помечать сущности (например, статьи или объявления) как избранные. Однако, при использовании Views для подсчёта количества избранных материалов возникают баги:
- Число отображается неправильно (например, 4, 10 или даже 235 при одном элементе).
- Анонимные пользователи не видят корректное число избранного.
- После добавления/удаления флага интерфейс не обновляется.
Решение: модуль Views Flag Refresh
Решение оказалось простым и элегантным — достаточно установить и включить модуль Views Flag Refresh, который отвечает за корректное обновление View через AJAX при срабатывании флага. После активации этого модуля:
- Счётчик избранного начинает обновляться сразу после клика.
- Работает как для зарегистрированных пользователей, так и для гостей (анонимных).
- Никакого дополнительного кода или JavaScript-хака не требуется.
Шаги по установке
- Установите основной модуль Flag:
composer require drupal/flag:^4.0@beta - Установите Views Flag Refresh:
composer require drupal/views_flag_refresh - Активируйте оба модуля через UI или Drush:
drush en flag views_flag_refresh - В представлении, которое отвечает за вывод избранного, добавьте флаг как связь и включите агрегацию (если нужно).
- Убедитесь, что отображение построено через Views, и блок добавлен в нужное место темы.
Итоги
С этим решением функциональность "Избранное" в Drupal начинает работать стабильно и корректно. Views Flag Refresh — незаменимый модуль, если вы хотите, чтобы пользовательский опыт был точным и отзывчивым.
Совет на будущее: при любом проекте с модулем Flag сразу включайте Views Flag Refresh — это сэкономит кучу времени.