Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Регистрация + подписка

00 голосов
4
Добрый день.
Возникла необходимость создания возможности подписаться на новости при регистрации. Попробовала сделать так - добавить пользовательское поле UF_SUBSCRIBE типа Checkbox, оно соответственно выводится при регистрации (регистрация сделана через компонент "Настраиваемая регистрация").
Далее добавила в файл init.php такой код, предполагалось, что после регистрации в функции проверится, установлена ли галочка, если да, то добавить нового подписчика:

Код
// добавляем обработчик события при регистрации 
AddEventHandler("main", "OnAfterUserRegister", "OnAfterUserRegisterHandler"); 
// а заодно и при обновлении данных пользователем 
AddEventHandler("main", "OnAfterUserUpdate", "OnAfterUserRegisterHandler"); 

// описываем саму функцию 
function OnAfterUserRegisterHandler(&$arFields) 
{
if($arFields["USER_ID"]>0)        
  {
   if ($arFields['UF_SUBSCRIBE']) 
   {
    $arSubFields = Array(
        "USER_ID" => $arFields["USER_ID"],
        "FORMAT" => "text",
        "EMAIL" => $arFields["EMAIL"],
        "ACTIVE" => "Y"
    );
    $subscr = new CSubscription;
    ID = $subscr->Add($arSubFields);
    if($ID>0)
        CSubscription::Authorize($ID);
    else
        $strWarning .= "Error adding subscription: ".$subscr->LAST_ERROR."<br>"; 

  }
  return true; 
  }
}

Подскажите, пожалуйста, в чем ошибка, потому как после регистрации грузится пустая страница, причем ничего дальше заголовка не загружается, и соответственно подписчик не добавляется. и проблема гдето в вызове $subscr->Add($arSubFields);
спросил 29 Янв, 14 от Sarasta (160 баллов)

4 Ответы

00 голосов
Я делал подобную задачу
http://www.retail.ru/profile/register.php?register=yes&backurl=%2F
http://retailbooks.ru/personal/index.php?show=registration&register=yes&backurl=%2F
Без доп свойств, модифицировал шаблон и написал обработчик события.

Цитата
Подскажите, пожалуйста, в чем ошибка, потому как после регистрации грузится пустая страница, причем ничего дальше заголовка не загружается, и соответственно подписчик не добавляется. и проблема гдето в вызове $subscr->Add($arSubFields);

Скорее всего не подключен модуль подписки из-за чего и возникает ошибка.
ответил 01 Июнь, 14 от Almarea (3,760 баллов)
00 голосов
Ну да, я тоже сначала хотела без свойств, но не совсем понятно было, как в обработчике определить, выбрано чтото или нет, поэтому сделала пока так. Кстати, если не сложно, подскажите вкратце, пожалуйста, как Вы это проверяли в обработчике.

Проблема в том, что не выполняется даже такой код
$id = 6;
$arSubFields = Array(
"USER_ID" => $id,
"ACTIVE" => "Y",
"EMAIL" => "email@email.ru",
"FORMAT" => "text",
);
$subscr = new CSubscription;
$ID = $subscr->Add($arSubFields);
пользователь с id=6 есть в списке.
Происходит то же самое, застревает на выполнении $ID = $subscr->Add($arSubFields);
С модулем подписки вроде все нормально, рассылки создаются и отправляются, уже не знаю что делать :(
ответил 29 Сен, 14 от Sarasta (160 баллов)
00 голосов
Код
CModule::IncludeModule('subscribe');
?
ответил 01 Фев, 15 от Miso (740 баллов)
00 голосов
Эх, спасибо, действительно в этом была проблема :oops:
Спасибо вам большое, Дмитрий и Максим за помощь.
Немного только теперь непонятно, после регистрации пользователь добавляется в качестве подписчика, все как и планировалось, только когда после этого авторизованным заходишь на страницу с информацией о подписках, там не отображается, что ты подписан на чтото, только предлагается подписаться.
ответил 15 Май, 15 от Sarasta (160 баллов)

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

0 голосов
2 ответов
спросил 15 Апр, 14 от Minmatar (100 баллов)
0 голосов
3 ответов
спросил 18 Фев, 14 от fdsc (180 баллов)
0 голосов
5 ответов
0 голосов
2 ответов
спросил 08 Авг, 13 от Eliga (360 баллов)
0 голосов
6 ответов
спросил 22 Июль, 13 от JIauJIa (280 баллов)