[Y|N] Если опция отмечена, то при переходе на детальную страницу элемента в адресную строку браузера будет подставляться тот путь, который формируется при просмотре элемента через основной раздел, даже если элемент открыт через другой родительский его раздел.
<?php
AddEventHandler("sale", "OnSaleComponentOrderResultPrepared", ['\SaleEvents', "OnSaleComponentOrderResultPrepared"]);
class SaleEvents {
public static function OnSaleComponentOrderResultPrepared($order, &$user_result, $request, &$params, &$result)
{
/**@global \CUser $USER */
global $USER;
if ($USER->IsAuthorized()
&& ($user_info = \Bitrix\Main\UserTable::getList([
'filter' => [
'=ID' => $USER->GetID(),
],
'select' => [
'EMAIL',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'PERSONAL_PHONE',
],
])->fetch())
) {
foreach($result['JS_DATA']['ORDER_PROP']['properties'] as &$prop) {
if (!empty(reset($prop['VALUE']))) {
continue;
}
switch($prop['CODE']) {
case 'EMAIL':
$prop['VALUE'] = [$user_info['EMAIL']];
break;
case 'FIO':
$name_parts = [];
foreach([
'LAST_NAME',
'NAME',
'SECOND_NAME',
] as $name_key) {
if (empty($user_info[$name_key])) {
continue;
}
$name_parts[] = $user_info[$name_key];
}
$prop['VALUE'] = [
implode(' ', $name_parts)
];
break;
case 'PHONE':
$prop['VALUE'] = [$user_info['PERSONAL_PHONE']];
break;
}
}
unset($prop);
}
}
}
Bitrix\Main\Loader::includeModule("catalog");
$fields = [
'PRODUCT_ID' => 98, // ID товара, обязательно
'QUANTITY' => 2, // количество, обязательно
'PROPS' => [
['NAME' => 'Test prop', 'CODE' => 'TEST_PROP', 'VALUE' => 'test value'],
],
];
$r = Bitrix\Catalog\Product\Basket::addProduct($fields);
if (!$r->isSuccess()) {
var_dump($r->getErrorMessages());
}
<?
// Пример запрещает сохранение в сессии номера последней страницы
// при стандартной постраничной навигации.
// По умолчанию в сессии запоминается последняя открытая страница постраничной навигации.
// Если вы хотите изменить такое поведение для данной текущей страницы,
// то до вызова метода CDBResult::NavPrint необходимо воспользоваться следующим кодом:
CPageOption::SetOptionString("main", "nav_page_in_session", "N");
// Для того чтобы вернуть режим по умолчанию:
CPageOption::SetOptionString("main", "nav_page_in_session", "Y");
?>