Быстрая отписка от всех рассылок модуля "E-mail маркетинг", в кабинете пользователя

Просмотров: 3224

Задача: дать пользователям возможность отписаться от всех рассылок "E-mail маркетинга", не только по ссылке из письма, но и в персональном разделе- по нажатию одной кнопки.

Быстрая отписка от всех рассылок модуля E-mail маркетинг, в кабинете пользователя

Компонент быстрого отказа от рассылки

Что бы сделать это гибким и не набрасывать код прямо на странице, создадим компонент. Компонент будет без параметров, по этому достаточно простой. Ниже, можно будет скачать уже готовый.

В файле component.php размещаем код.

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();

use Bitrix\Main\Loader;

Loader::includeModule('sender');

global $USER;

if ($USER->IsAuthorized()) {
    $rsUser = CUser::GetByID($USER->GetID());
    $arUser = $rsUser->Fetch();
    
    $subscriptionDb = \Bitrix\Sender\MailingSubscriptionTable::getSubscriptionList(array(
        'select' => array('IS_UNSUB'),
        'filter' => array(
            '=CONTACT.CODE' => $arUser['EMAIL'],
        ),
    ));
    while (($subscription = $subscriptionDb->fetch())) {
        $arResult['USER_IS_UNSUB'] = $subscription['IS_UNSUB'];
    }

    if ($_POST['UNSUBSCRIBE'] === 'UNSUBSCRIBE') {
        $contact_id = \Bitrix\Sender\ContactTable::addIfNotExist(
            array(
                'EMAIL' => $arUser['EMAIL']
            )
        );
        $contact = new \Bitrix\Sender\Entity\Contact($contact_id);

        $subList = $contact->loadData($contact_id);
        $subList = $subList['SUB_LIST'];
        foreach ($subList as $item) {
            $contact->unsubscribe($item);
        }
    }
} else {
    LocalRedirect('/');
}

$this->IncludeComponentTemplate();

Здесь мы получили e-mail текущего, авторизованного пользователя и с помощью \Sender\MailingSubscriptionTable::getSubscriptionList узнали, есть ли у пользователя активные подписки.

Достаточно отобрать по полю IS_UNSUB, у пользователей без подписки или с неподтвержденной подпиской, весь результат будет пустым. Из этого поля создали $arResult['USER_IS_UNSUB']

Далее получаем все подписки пользоватея зная его E-MAIL и если $_POST['UNSUBSCRIBE' передан, отписываем от всех подписок методом $contact->unsubscribe();

Также выполнили проверку на авторизацию пользователя. Если пользователь не авторизован-то отправялется на главную страницу.

Выводим форму отписки

В template.php выводим форму:

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->setFrameMode(true);

if ($arResult['USER_IS_UNSUB'] === 'N') {?>
    <form method="post" action="">
        <input type="hidden" name="UNSUBSCRIBE" value="UNSUBSCRIBE"/>
        <button>
           Отписаться от рассылки
        </button>
    </form>
<?}else{?>
    У вас нет подписок
<?}?>

Здесь, проверили на наличие $arResult['USER_IS_UNSUB']: если ключ есть то показываем поле, со скрытым input и кнопкой отправки. Иначе, оповестили пользователя что у него подписок нет и отписываться не от чего. Готовый компонент можно скачать по ссылке:

Скачать компонент

Закидываем компонент в директорию "/local/components/bazarow" и вызываем в нужном месте сайта:

$APPLICATION->IncludeComponent(
	"bazarow:unsuscribe.all.sender",
	"",
Array()
);

На этом все, дизайн можно сделать под себя. По желанию добавить оповещение перед отправкой "А вы действительно хотите отписаться" и прочие красивости.

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

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

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

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

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.