Sendsay

Интеграция с сервисом email-маркетинга Sendsay
Автор дополнения
Артур Шевченко
Пакетов
11
Закачек
3 164
Обычно отвечает в течение суток
Автор дополнения
Пакетов
11
Закачек
3 164
Обычно отвечает в течение суток
Версия 1.0.10-pl
Дата выпуска 04.02.2026
Загрузки 8
Просмотры 2 042
Внимание, этот компонент несовместим с MODX 3.
Sendsay — компонент передачи данных в сервис email-маркетинга Sendsay.

!!! ВАЖНО!!! Требуется версию PHP >= 7.4

Возможности:
1. Подписка на рассылку
2. Отправка событий:
2.1. Просмотр категории;
2.2. Просмотр товара;
2.3. Добавление в корзину;
2.4. Изменение корзины;
2.5. Удаление из корзины;
2.6. Очистка корзины;
2.7. Оформление заказа;
2.8. Изменение статуса заказа;
2.9. Регистрация на сайте после активации пользователя (OnUserActivate);
2.10 Авторизация на сайте (OnWebLogin).

Обязательные настройки:
1. Указать в системной настройке ss_api_key ключ доступа к API.
2. Указать в системной настройке ss_account_id ID аккаунта в Sendsay.

Настройки для возможности подписки на рассылки.
1. Добавить в форму подписки поля
<input type="hidden" name="lists[pl2312]" value="set"> - где, pl2312 - id списка для рассылки, а value может быть set - добавление в список или delete - удаление из списка.
    <input type="hidden" name="newbie.confirm" value="1"> - если нужно отправить подписчику письмо для подтверждения подписки
    <input type="hidden" name="newbie.letter.confirm" value="123"> - номер шаблона информационного письма
    <input type="hidden" name="newbie.letter.no-confirm" value="124"> - номер шаблона информационного письма
    Подробнее о подтверждении читайте в документации https://sendsay.ru/api/api.html#Cоздать-подписчика-Обновить-данные-подписчика-КД
    <input type="email" name="email"> - email пользователя.

2. Опционально можно добавить поля с именами base[someKey] и custom[someKey].
Массив `base` содержит базовую информацию о пользователе
Фамилия — lastName
Имя — firstName
Отчество — middleName
Пол — gender (1 — мужской, 0 — женский)
Дата рождения — birthDate
Город — city
Адрес — address
Индекс — postalCode
Часовой пояс — tz
Страна — country (коды стран можно посмотреть в ЛК Sendsay)
Массив `custom` содержит дополнительную информацию о пользователе, т.е. те поля которые вы создали сами.
3. Использовать хук для FormIt `SendsaySubscibe`.

Настройка отправки событий в модуль Продажи.

!!! ВАЖНО!!! Ваш тариф должен включать в себя модуль Продажи.
!!! ВАЖНО!!! Необходимо установить miniShop2, SendIt.

1. Указать в системной настройке `ss_account_id` ID списка для рассылки писем пользователя сделавшим заказ.
2. Указать в системной настройке `ss_sale_script` код скрипта из сервиса Sendsay.
3. Сверить сопоставление статусов в системной настройке ss_statuses, значение слева от == ID статуса на сайте, значение справа — ID статуса в сервисе.
4. Если нужно удалять заказчиков из других списков, укажите из ID в системной настройке `ss_delete_from_lists`.

Для разработчиков.

Для внесения изменений в логику работы JS можно указать другой путь к файлу в системной настройке `ss_frontend_js`.

Основной код компонента расположен в папке `core/components/sendsay/services` с комментариями.

Компонент использует composer для автозагрузки классов по стандарту PSR-4. Все классы лежат в папке `core/components/sendsay/services/`.
Компонент не создаёт таблиц в БД.

Класс ModxSendsay\ApiClient содержит список публичных методов для работы с подписчиками и отправки событий.
Класс ModxSendsay\Base является базой для классов Sales и Subscriber.
Класс ModxSendsay\Subscriber предназначен для создания и редактирования контактов. Подготавливает данные для отправки в Sendsay.
Класс ModxSendsay\Sales предназначен для управления товарами, заказами, корзинами и категориями. Подготавливает данные для отправки в Sendsay.
Класс ModxSendsay\Feed предназначен для формирования фида. Для автоматизации процесса следует добавить в планировщик задачу на запуск скрипта из папки cron.
Класс ModxHelpers\Request реализует метод отправки запросов через CURL.
Класс ModxHelpers\Logging позволяет записывать логи работы скриптов в файл.
Класс ModxHelpers\QueueManager позволяет работать с очередями добавлять и читать сообщения.

Компонент генерирует следующие системные события:
1. ssOnBeforeParseOffer — срабатывает до парсингом оффера, позволяет поменять любые данные оффера через $feed->offer (\ModxSendsay\Feed $feed), так же есть прямой доступ к массиву данные через array $offer;
2. ssOnBeforeGetProducts,ssOnGetEventData,ssOnBeforeGetModificationOptions — позволяет изменить запрос на получение соответствующих данных используя переменную \xpdoQuery $query;
3. ssOnGetEventData — позволяет менять данные событий перед отправкой в Sendsay; Доступны переменные \ModxSendsay\Sales $sales ($sales->eventData) и array $eventData;

1.0.10-pl

  • Добавил передачу url товара в фид.

1.0.9-pl

  • Добавил очистку кэша очередей в cron.php.
  • Добавил передачу email при оформлении заказа.
  • Поменял видимость свойства client для обеспечения доступа к API извне.

1.0.8-pl

  • Системное событие ssOnOrderSubscribe.

1.0.7-pl

  • Исправил ошибку пустых псевдонимов полей.

1.0.6-pl

  • Сделал рефакторинг класса Sales
  • Исправил ошибку в методе подготовке данных списков, которая мешала удалять подписчиков из списка.

1.0.5-pl

  • Добавил системную настройку ss_error_field_name для указания поля вывода ошибки.
  • Добавил системную настройку ss_field_aliases для задания псевдонимов полей.

1.0.4-pl

  • Добавил системную настройку ss_newbie_confirm_letter для указания номера шаблона письма-подтверждения.

1.0.3-pl

  • Мелкие правки.

1.0.2-pl

  • Исправил ошибку пустой корзины.
  • Добавил события ssOnBeforeParseOffer,ssOnBeforeGetProducts,ssOnGetEventData,ssOnBeforeGetModificationOptions,ssOnGetEventData.
  • Добавил класс генерации фида и скрипт для планировщика, генерирующий фид.
  • Сделал очереди файловыми.

1.0.1-pl

  • Адаптировал под miniShop2 2.9.3.

1.0.0-pl

  • Убрал зависимость от SendIt.

1.0.0-beta

  • Первая сборка.

Последние обсуждения в сообществе MODX.pro