Баннеры уведомлений

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

Значит, если он исчез для пользователя, то исчез навсегда?

1 лайк

Ах! На самом деле это очень хороший вопрос, @Roi, и короткий ответ — да.

Каждому баннеру присваивается ID на основе номера индекса и имени плагина-выхода (plugin-outlet). Затем ID закрытых баннеров сохраняются в локальном хранилище браузера.

Таким образом, если баннер закрыт, он останется скрытым, даже если его конфигурация изменится.

Я вижу, что это может стать проблемой; я подумаю над лучшим способом решения этой задачи. — Предложения приветствуются : )

1 лайк

versatile-banner использует настройку имени cookie, которую администраторы могут изменить, чтобы снова сделать баннер видимым для пользователей, которые его закрыли.

1 лайк

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

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

Кажется, мне нужно изменить способ определения ID, а затем, возможно, адаптировать метод работы с куки. :thinking:

Тогда куки, похоже, подходят лучше, чем идентификаторы, особенно когда идентификаторы меняются при изменении порядка сортировки. :eyes:

На мой взгляд, было бы полезно генерировать новый идентификатор (cookie) каждый раз при изменении баннера.

Насчёт циклов: если бы уже наступило Рождество, я бы пожелал цикл, который можно задавать по дням недели (один или несколько) и по числам месяца (один или несколько). И, возможно, для обоих параметров что-то вроде «каждые x», чтобы я мог выбрать, например, «каждый второй понедельник и пятницу» или «1-е и 16-е числа каждого третьего месяца».

На самом деле мне удалось решить эту проблему с помощью гибридного подхода.

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

Фактические ID для каждого баннера формируются на основе обоих значений. На мой взгляд, этот метод обеспечивает большую гибкость:

  • Индивидуальную видимость баннера можно сбросить, обновив его ID, не затрагивая видимость других баннеров.
  • Если необходимо сбросить видимость нескольких или всех баннеров, можно обновить версию конфигурации баннера.

Я скоро разверну эти изменения.


Обновление: Версия 1.4.0 уже доступна.

Добавлено уникальное[1] и обязательное поле ID баннера для каждого уведомительного баннера. Обновлена соответствующая логика настроек, миграции и тесты для поддержки этого изменения. Кроме того, добавлена настройка Версия конфигурации баннера, которая помогает сбрасывать видимость баннеров при возникновении важных изменений. Эти улучшения делают отслеживание закрытия баннеров более надежным и устойчивым к будущим изменениям.


  1. Уникальность зависит от пользователя. К сожалению, настройки объекта темы не позволяют требовать уникальности значений. Однако метка вкладки теперь использует значение ID для лучшей наглядности. ↩︎

Вау, отлично! Спасибо! Я протестирую и дам вам обратную связь. :slight_smile:

1 лайк

Работает, как и было обещано! Отлично. Еще раз спасибо! :slight_smile:

1 лайк

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

@Roi, если вы хотите ограничить показ баннеров только авторизованным пользователям, просто выберите все группы TL в аудитории.

Или, возможно, вы можете использовать доступные CSS-селекторы, чтобы скрыть баннер на страницах входа и регистрации.

Нет, было бы хорошо, если бы баннер отображался и для неавторизованных пользователей.

Да, я вспомнил, что я также скрывал другие элементы, и теперь помог себе с помощью CSS и display: none; для страницы входа, страницы регистрации и страницы приглашения. :slight_smile:

1 лайк