Переносить избранное неавторизованного пользователя в профиль

пользователи скажут спасибо

Рубрики
1С-Битрикс

У Reds Group есть подробная статья по созданию функционала добавления товаров в избранное в 1С-Битрикс. Предполагается, что список избранных товаров у неавторизованного пользователя хранится в файлах cookie, а у авторизованных — в отдельное пользовательское поле. От себя дополню её небольшой фичей: после авторизации будем забирать ID товаров из избранного в cookie-файле ‘favorites’ и сохранять в профиле юзера.

// в init.php
$eventManager->addEventHandler("main","OnAfterUserAuthorize",'OnAfterUserAuthorizeHandler');

function OnAfterUserAuthorizeHandler($arUser)
    {
        global $APPLICATION;
        $arrFavouritesList = unserialize($APPLICATION->get_cookie("favorites")); //избранные ID товаров из куки

        $idUser = $arUser['user_fields']['ID'];
        $rsUser = CUser::GetByID($idUser);
        $arUser = $rsUser->Fetch();
        $arElements = $arUser['UF_FAVORITES'];  // Достаём избранное пользователя

        foreach ($arrFavouritesList as $itemID) {
            if(!in_array($itemID, $arElements)) // Если еще нету этой позиции в избранном
            {
                $arElements[] = $itemID;
            }
        }
        $user = new CUser;
        $user->Update($idUser, Array("UF_FAVORITES" => $arElements)); // Добавляем элементы в избранное
 
    } 

Единственное, я так и не решил, что лучше с точки зрения пользовательского опыта: очистить файл куки после успешного добавления товаров в профиль пользователя, оставить как есть или дополнить его полным списком? Как поступили бы вы?

Добавить комментарий