В некоторых случаях есть необходимость при регистрации пользователя создавать профиль покупателя, чтобы при переходе пользователя на страницу оформления заказ, у него сразу были подставлены поля из профиля, в частности номер телефона.
Для этого разместим код из примера ниже в файл bitrix/php_interface/init.php
.
Перед использованием кода из примера, замените значения для идентификтора типа плательщика $personalTypeId
и идентификатора свойства заказа с номером телефона (ORDER_PROPS_ID
). Чтобы расширить набор свойств,которые попадут в профиль покупателя, дополните массив $arProfileProps
.
// подписываемя на событие модуля
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
"bxmaker.authuserphone",
"onUserAdd",
"bxmaker_authuserphone_onUserAdd"
);
// обработчики события
function bxmaker_authuserphone_onUserAdd(\Bitrix\Main\Event $event)
{
global $APPLICATION;
$fields = $event->getParameter('fields');
//идентификтаор типа плательщика
$personalTypeId = 1;
//идентификтаор свойства для хранения номера телефона
$phonePropId = 3;
//массив свойств создаваемого профиля
$arProfileProps = [
[
"ORDER_PROPS_ID" => $phonePropId, //идентификатор свойства заказа с номером телефона для конкретного типа плательщика
"NAME" => "Телефон",
"VALUE" => $fields['PHONE']
]
];
if (\Bitrix\Main\Loader::includeModule('sale')) {
//создаём новый профиль --------
$arProfileFields = [
"NAME" => "Профиль покупателя (" . $fields['PHONE'] . ')',
"USER_ID" => intval($fields['USER_ID']),
"PERSON_TYPE_ID" => $personalTypeId
];
if ($profileId = CSaleOrderUserProps::Add($arProfileFields)) {
// echo 'Profile ID: '.$profileId.PHP_EOL;
//если профиль создан
if ($profileId) {
//добавляем значения свойств к созданному ранее профилю
foreach ($arProfileProps as $arProp) {
$resultProp = CSaleOrderUserPropsValue::Add(array_merge($arProp, [
"USER_PROPS_ID" => $profileId,
]));
// echo 'ID: '.$resultProp.PHP_EOL;
}
}
} else {
// echo $APPLICATION->GetException();
}
}
$result = new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, []);
return $result;
}
Чтобы проверить добавление, перейдите на страницу покупаталей - Администрирование / Магазин / Покупатели / Список покупателей
и найдите добавленного пользователя.
Затем на на странице покупателя, в соответствующей вкладке найдите профиль с названием Профиль покупателя (7 xxx xxx xx xx)