Битрикс как добавить подписчика через API

Добавляем нового подписчика сразу в админку, даже не спрашивая разрешения на рассылку 🙂

Как в битриксе добавить нового подписчика через свою форму

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

Пропустим тот момент, где нужно написать HTML с формой и передать в ваш обработчик поле с емейлом, и перейдем непосредственно к коду:

<?
if (CModule::IncludeModule('subscribe') && !empty($_POST['email'])) {

	$email = $_POST['email'];

	$subscribeFields = array(
		"USER_ID" => ($USER->IsAuthorized()? $USER->GetID():false),
		"FORMAT" => "html",
		"EMAIL" => $email,
		"ACTIVE" => "Y",
		"CONFIRMED" => "Y",
		"SEND_CONFIRM" => "N",
		"RUB_ID" => array(1)
	);

	$subscr = new CSubscription;
	$ID = $subscr->Add($subscribeFields);

	if($ID > 0) {
		CSubscription::Authorize($ID);
	}
}
?>

Небольшой комментарий ко всему происходящему:
если вы передали формой email пользователя, методом POST, значения которого лежит в $_POST[’email’] – и модуль для подписки и рассылки подключен, пытаемся выяснить авторизован ли юзер, чтобы привязать к его ID. В параметрах также указываем тип HTML, активность, то что рассылка сразу подтверждена и письмо с подтверждением не отсылаем:

"CONFIRMED" => "Y",
"SEND_CONFIRM" => "N",

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

"RUB_ID" => array(1)

Если у вас возникают ошибку не забывайте прописывать пролог. И не забываем про область видимости для USER – global:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>
<?
global $USER;

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

А какими сервисами пользуетесь вы? mailchimp, unisender? Расскажите в комментариях как вы решали подобную задачу на своем проекте 🙂

Если вам необходимо настроить работу с подписчиками, выгрузку их в файл или по API в какой-то сервис - обращайтесь ко мне за помощью

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь