@DickieDick

Существует ли событие добавления нового подписчика в компоненте bitrix:sender.subscribe?

Доброго времени суток!

На сайте размещен компонент bitrix:sender.subscribe - форма подписки. Пользователь вводит в нее свой e-mail, жмет "Подписаться" - и в итоге я могу видеть его e-mail в Списке адресов (Администрирование->Маркетинг->Email-маркетинг->Список адресов).

Вопрос - предусмотрено ли в Битрикс какое-либо событие, с помощью которого можно отловить момент добавления в этот список новой подписки? Никак не могу найти в документации Битрикса каких-либо зацепок. Разве что на этой странице упоминаются какие-то 3 события:
https://dev.1c-bitrix.ru/api_d7/bitrix/sender/subs...
Но что-то у меня не получилось ими воспользоваться.

Также пробовал применить фрагмент кода, найденный на форуме Битрикс:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible('crm', '\\Bitrix\\Sender\\Contact::onBeforeAdd', ['myEvents','onBeforeAddHandler']);


Но такой код тоже не завелся. Сможет ли кто-то прояснить ситуацию, может быть, я ищу то, чего не существует?
  • Вопрос задан
  • 2009 просмотров
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Компонент bitrix:sender.subscribe добавляет подписку на рассылку с помощью метода \Bitrix\Sender\Subscription::add.
Внутри метода сначала выполняется проверка наличие переданного email в базе контактов, и если EMAIL там отсутствует, то выполняется его добавление. А после добавления подписка на указанные рассылки.

Добавление контакта происходит в ORM таблицу Bitrix\Sender\ContactTable
Подписка на рассылку Bitrix\Sender\MailingTable

Подписаться на событие можно так:
$eventManager = Main\EventManager::getInstance();
$eventManager->addEventHandler(
    "sender",
    "\Bitrix\Sender\ContactTable::onAfterAdd",
    ['myEvents','onBeforeAddHandler']
);


Подписавшись на событие добавления в ContactTable, вы сможете обработать варианты добавления НОВЫХ контактов. Но если старый пользователь воспользуется подпиской, обработчик не сработает.

При подписке на добавление MailingTable, вы отловите ВСЕ подписки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rabamaster
@rabamaster
Попробуйте
AddEventHandler('subscribe', 'OnStartSubscriptionAdd', 'OnBeforeUserAddHandler');

function OnBeforeUserAddHandler(&$arFields) {
    Debug::dumpToFile($arFields);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы