Skip to content

Описание правила показа программируемого попапа: «Один раз за месяц»

Блок правил

Чтобы настроить правила программируемого всплывающего окна требуется создать ветку условий. Их можно комбинировать и создавать логические ветки с помощью кнопок «И», «ИЛИ». Блок правила может состоять из нескольких блоков условий. Функция, отвечающая за показ окна работает просто: условие либо выполнилось, либо нет. В последнем случае никакого показа не происходит. Для того, чтобы всё сработало так, как нужно, должны выполняться все функции, настроенные в блоке правил.

Нажимая на «И» и «ИЛИ» пользователь добавляет дополнительное правило в блок.

Условия И и ИЛИ

Отображение условий «И» и «ИЛИ» отражает внутреннюю механику процесса. «ИЛИ» появляется тогда, когда нужен сценарий на случай, если условие не сработает. Этим перекрывается вариативность поведения покупателей магазина. Опция или создаёт группу условий, которые проверяются одной функцией. Если не подходит одно, проверяется следующее, и так пока не найдётся подходящее. После того, как оно нашлось, происходит проверка следующего блока условий, что наглядно отражает логическое объединение с помощью «И».

Важно! Чтобы пользователь увидел всплывающее окно, должны совпасть все условия в блоке правил. Ни один из блоков условий, после обработки функцией, не должен возвращать значение логическое FALSE.

Работа правил программируемого окна для сценария «Один раз за месяц»

Правило показа всплывающего окна для сценария «Один раз в месяц» состоит из трёх блоков. Первый состоит из условий:

  • Категория – Пользователь.

    • Опция – Показывать.
  • Условие показа: «Один раз за месяц»

    Выбор условия

    Сначала функция проверки условий определяет их тип. Он задаётся при выборе одной из опций.

Выбор определяет условия запроса, в числе которых:

  • Тип события.
  • id магазина.
  • id клиента.
  • id текущего всплывающего окна.
  • Дата, в формате год-месяц-день, а также метки времени.

Запрос проверяет факт отсутствия события, соответствующего запросу, на протяжении тридцати дней от сегодняшней даты. Если всплывающего окна не было за обозначенный период, значит данное условие выполняется. Следующие два блока условий проверяют правила нахождения на странице.

Условие "На странице" Структура блока условий выглядит следующим образом:

  • Категория – Пользователь

    • Опция – Находится на странице
  • Опции сравнения.

    • Содержит – в первом блоке.
    • Не равно – во втором блоке.
  • Форма ввода данных, с которыми будет производиться сравнение. Проверка нахождения пользователя на странице При выборе опции «Находится на странице», как и в первом блоке условий, работает функция, которая обрабатывает данные в зависимости от типа условия. В данном случае функция сравнений выполняется с параметрами, которые с помощью регулярных выражений обрезают протокол передачи данных и доменную зону. То, что осталось сравнивается в виде строк с теми данными, что вводил пользователь.

    Обрезание url

Опции сравнения

Список доступных опций зависит от выбранного условия в первом блоке. Каждое из них предполагает разные наборы вариантов, но для функций, управляющих обработкой блоков, эти опции можно разделить на группы. При наличии любого слова из этих групп, будут выполнены одни и те же действия.

  1. Группа опций: «ДА», «РАВНО», «СОДЕРЖИТ». Обрабатывается функцией, проверяющей логическое равенство и возвращающей либо булево значение TRUE или FALSE, либо отправляет запрос в базу данных, откуда возвращаются соответствия. Также обрабатывается функцией, которая обрабатывает сравнения с учётом разных сценариев.
    • Важно! «СОДЕРЖИТ» – имеет одно название для двух разных опций при обработке данных. Оба типа могут обрабатываться функцией, отвечающей за результат сравнений. Путаница невозможна благодаря тому, что появление того или иного типа зависит от условия первого блока. Эти опции никогда не появляются вместе.
  2. Группа опций: «НЕТ», «НЕ РАВНО», «НЕ СОДЕРЖИТ». Обрабатывается функцией, проверяющей логическое равенство и возвращающей либо булево значение TRUE или FALSE, либо отправляет запрос в базу данных, откуда возвращаются соответствия с учётом разных сценариев. Также обрабатывается функцией, которая обрабатывает сравнения. Разница между группами опций заключается в том, что на конечном этапе одна функция получает на обработку значение с логическим нет, что меняет результат, а в другом – запрос типа «NOT IN» к базе данных. Последнее означает, что условием срабатывания всплывающего окна будет отсутствие какого-либо признака в получаемых данных.
    • Важно! «НЕ СОДЕРЖИТ» – это тоже название двух опций, которые используются во внутренней логике сервиса. Все замечания, касающиеся «СОДЕРЖИТ» также относятся и к этому варианту выбора.
  3. Третья группа опций, это те, что обрабатываются обеими функциями, но по-разному. Варианты «БОЛЬШЕ ЧЕМ», «МЕНЬШЕ ЧЕМ» и «МЕЖДУ» представлены в обеих вышеуказанных функциях.
    • «БОЛЬШЕ ЧЕМ» - в случае с функцией, отправляющей запрос в базу данных, в запросе будет требование вернуть данные больше, чем переданное значение. Функция, проверяющая условия, вернёт или последний элемент массива, если в качестве параметра переданы данные этого типа, либо вернёт наибольшее число после сравнения.
    • «МЕНЬШЕ ЧЕМ» - в случае с функцией, отправляющей запрос в базу данных, в запросе будет требование вернуть данные меньше, чем переданное значение. Функция, проверяющая условия, вернёт или последний элемент массива, если в качестве параметра переданы данные этого типа, либо вернёт наименьшее число после сравнения.
    • «МЕЖДУ» – в функции, проверяющей условия, возвращается булево значение TRUE или FALSE, если переданное значение есть в массиве в указанном диапазоне. Сам диапазон задаётся пользователем в блоках условия по обе стороны от «МЕЖДУ». Вторая функция отправляет в базу данных запрос о нахождении результатов в указанном диапазоне.
  • «НАЧИНАЕТСЯ С» – эта опция обрабатывается только в функции проверки условий. Применяемый метод str_starts_with определяет есть в искомой строке указанная пользователем подстрока.
    • Важно! Проверка ведётся с учётом регистра.

Работа правила

Блок правил

  1. Первый блок условий проверяет факт того, что событие не повторялось в обозначенный период.
  2. Второй блок условий сравнивает в виде строк данные, которые ввёл пользователь и часть url без доменной зоны и протокола.
  3. Третий блок условий проверяет и часть url без доменной зоны и протокола, сравнивает её с данными пользователя и позволяет запустить всплывающее окно только в случае, если они не совпадают.

    Обрезание url

Примечания

  • Когда функция обрабатывает url, GET-запросы не обрезаются. Нужно учитывать этот момент при составлении условий и не использовать «строгие» опции сравнения вроде «РАВНО» или «НЕ РАВНО», поскольку неизвестно как именно конкретный запрос будет отображаться в адресной строке.
  • Если главная страница выводится и при этом в адресной строке после доменной зоны нет никаких символов, то можно оставить строку ввода данных в блоке условия пустой. В таком случае отсутствующие данные заменяются пустой строкой во время выполнения сравнения.

    Обрезание url