Битрикс подписка \ отписка пользователя

Универсальный код для подписки и отписки пользователя на конкретную рубрику.

Как в битриксе подписать пользователя на рубрику

Для реализации данной задачи нам поможет bitrix api. От нас требуется передать через форму $_POST[“SUBSCRIBE”]
сделать это можно например так:

<input name="SUBSCRIBE" value="Y" type="hidden">

Именно этот “инпут” нам необходим в нашей форме, если вы используете нестандартный компонент.

if(CModule::IncludeModule("subscribe")){
        if ($_POST["SUBSCRIBE"] == "Y") {
                $arFields = Array(
                        "USER_ID" => $USER->GetID(),
                        "FORMAT" => "html",
                        "EMAIL" => $USER->GetEmail(),
                        "ACTIVE" => "Y",
                        "RUB_ID" => array()
                );
                $subscr = new CSubscription;
                $ID = $subscr->Add($arFields);
                if($ID>0) {
                        CSubscription::Authorize($ID);
                }
        } else {
                $subscription = CSubscription::GetByEmail($USER->GetEmail());
                if($subscription->ExtractFields("str_")) {
                        $ID = (integer)$str_ID;
                }
                if ($ID >0) {
                        $res = CSubscription::Delete($ID);
                }
        }
}

На что стоит обратить внимание?  Давайте глянем для начала какие есть поля:

  • RUB_ID – массив идентификаторов рассылок, на которые подписывается адрес;
  • SEND_CONFIRM – отправлять ли письмо с кодом подтверждения подписчику (Y/N).
  • ALL_SITES – отписать подписчика от рассылок всех сайтов или только от заданного SITE_ID (Y/N).
  • USER_ID – необязательный. Идентификатор зарегистрированного пользователя.
    и список основных полей:
Название поля Описание Тип Обяз.
ID Идентификатор подписки. int Да.
DATE_INSERT Дата добавления записи. datetime
DATE_UPDATE Дата модификации записи. datetime
USER_ID Идентификатор пользователя, которому принадлежит подписка. Если NULL, то подписка анонимна. int
ACTIVE Признак активности подписки (Y/N). Если подписка не активна, то рассылка на этот адрес не производится. char(1)
EMAIL Email подписки (уникальный). string(255) Да.
FORMAT Предпочтительный формат выпуска (text/html). string(4)
CONFIRM_CODE Код подтверждения подписки (пароль). string(8)
CONFIRMED Признак подтверждения подписки (Y/N). char(1)
DATE_CONFIRM Дата отправки кода подтверждения подписки. datetime

Оригинал таблицы по этой ссылке:
https://dev.1c-bitrix.ru/api_help/subscribe/classes/csubscriptiongeneral/csubscriptiongeneralfields.php

Из важных моментов:
1. убедитесь, что вы правильно передали ID пользователя
2. формат подписки может быть как чистый текст так и HTML
3. ID рубрики, укажите их чтобы подписать пользователя на определенную рубрику
4. SEND_CONFIRM – отправлять ли на емейл пользователя оповещение о подтверждении подписки. Если нет – указываем в параметрах “CONFIRMED” => “Y” и пользователь будет сразу подписан, так сказать, без своего согласия 🙂

Если вам функционал отписки не нужен, убираем часть кода и у нас остается:

if(CModule::IncludeModule("subscribe")){
        if ($_POST["SUBSCRIBE"] == "Y") {
                $arFields = Array(
                        "USER_ID" => $USER->GetID(),
                        "FORMAT" => "html",
                        "EMAIL" => $USER->GetEmail(),
                        "ACTIVE" => "Y",
                        "RUB_ID" => array(),
                        "CONFIRMED" => "Y"
                );
                $subscr = new CSubscription;
                $ID = $subscr->Add($arFields);
                if($ID>0) {
                        CSubscription::Authorize($ID);
                }
        }
}

 

Если на вашем проекте необходимо реализовать подписку на рубрики Битрикса, обращайтесь ко мне за помощью

автор: Dmitriy

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

Email: dmitriyribka@gmail.com

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