Хорошо, только что проверил один момент. Закрыл тестовый баннер, изменил даты начала и окончания, сохранил и перезагрузил страницу. Баннера нет.
Значит, если он исчез для пользователя, то исчез навсегда?
Хорошо, только что проверил один момент. Закрыл тестовый баннер, изменил даты начала и окончания, сохранил и перезагрузил страницу. Баннера нет.
Значит, если он исчез для пользователя, то исчез навсегда?
Ах! На самом деле это очень хороший вопрос, @Roi, и короткий ответ — да.
Каждому баннеру присваивается ID на основе номера индекса и имени плагина-выхода (plugin-outlet). Затем ID закрытых баннеров сохраняются в локальном хранилище браузера.
Таким образом, если баннер закрыт, он останется скрытым, даже если его конфигурация изменится.
Я вижу, что это может стать проблемой; я подумаю над лучшим способом решения этой задачи. — Предложения приветствуются : )
versatile-banner использует настройку имени cookie, которую администраторы могут изменить, чтобы снова сделать баннер видимым для пользователей, которые его закрыли.
Спасибо за подсказку, @Moin. Переименование куки для инвалидации сохранённых куки выглядит очень практичным решением.
В баннерах уведомлений их можно перемещать вверх и вниз, чтобы изменить порядок сортировки или изменить точки выхода. Это потенциально может скрыть новый баннер, если в том же месте ранее был отображён и закрыт другой баннер.
Кажется, мне нужно изменить способ определения ID, а затем, возможно, адаптировать метод работы с куки. ![]()
Тогда куки, похоже, подходят лучше, чем идентификаторы, особенно когда идентификаторы меняются при изменении порядка сортировки. ![]()
На мой взгляд, было бы полезно генерировать новый идентификатор (cookie) каждый раз при изменении баннера.
Насчёт циклов: если бы уже наступило Рождество, я бы пожелал цикл, который можно задавать по дням недели (один или несколько) и по числам месяца (один или несколько). И, возможно, для обоих параметров что-то вроде «каждые x», чтобы я мог выбрать, например, «каждый второй понедельник и пятницу» или «1-е и 16-е числа каждого третьего месяца».
На самом деле мне удалось решить эту проблему с помощью гибридного подхода.
Добавлена новая настройка Версия конфигурации баннера, которая применяется ко всем баннерам, а также новые индивидуальные значения ID баннера.
Фактические ID для каждого баннера формируются на основе обоих значений. На мой взгляд, этот метод обеспечивает большую гибкость:
Я скоро разверну эти изменения.
Обновление: Версия 1.4.0 уже доступна.
Добавлено уникальное[1] и обязательное поле ID баннера для каждого уведомительного баннера. Обновлена соответствующая логика настроек, миграции и тесты для поддержки этого изменения. Кроме того, добавлена настройка Версия конфигурации баннера, которая помогает сбрасывать видимость баннеров при возникновении важных изменений. Эти улучшения делают отслеживание закрытия баннеров более надежным и устойчивым к будущим изменениям.
Уникальность зависит от пользователя. К сожалению, настройки объекта темы не позволяют требовать уникальности значений. Однако метка вкладки теперь использует значение ID для лучшей наглядности. ↩︎
Вау, отлично! Спасибо! Я протестирую и дам вам обратную связь. ![]()
Работает, как и было обещано! Отлично. Еще раз спасибо! ![]()
Я только что заметил, что когда баннер должен отображаться для всех пользователей в top-notices, он также виден на экранах входа и регистрации. Для использования с десктопа это не проблема, но на мобильных устройствах это мешает работе с обоими экранами. Возможно ли скрыть баннеры top-notices на этих экранах? Если честно, я бы не скучал по баннерам даже на десктопной версии экранов входа и регистрации. ![]()
@Roi, если вы хотите ограничить показ баннеров только авторизованным пользователям, просто выберите все группы TL в аудитории.
Или, возможно, вы можете использовать доступные CSS-селекторы, чтобы скрыть баннер на страницах входа и регистрации.
Нет, было бы хорошо, если бы баннер отображался и для неавторизованных пользователей.
Да, я вспомнил, что я также скрывал другие элементы, и теперь помог себе с помощью CSS и display: none; для страницы входа, страницы регистрации и страницы приглашения. ![]()