Вариант без передачи параметра в ссылке.
Смысл заключается в том что: получаем всю корзину пользователя, выделяем из нее самый свежий товар (из добавленных в корзину).
Очищаем и снова наполняем корзину этим, одним товаром.
Код |
---|
<?
// подключаем ядро
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");
// подключаем модули
Bitrix\Main\Loader::includeModule("sale");
Bitrix\Main\Loader::includeModule("catalog");
$arBasketItems = array();
$dbBasketItems = CSaleBasket::GetList(
// Сортируем состав корзины по ID что бы самый новый, добавленный товар
// Оказался в конце массива
array("ID" => "ASC"),
array(
"FUSER_ID" => CSaleBasket::GetBasketUserID(),
"LID" => SITE_ID,
"ORDER_ID" => "NULL"
),
false,
false,
array("PRODUCT_ID", 'ID')
);
while ($arItems = $dbBasketItems->Fetch())
{
// В этой переменной последний добавленный товар
$arToCart = $arItems['PRODUCT_ID'];
}
// очищаем корзину
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID());
// Добавляем товар в корзину
$fields = [
'PRODUCT_ID' => $arToCart, // ID самого свежего добавленного товара
'QUANTITY' => 1,
];
$r = Bitrix\Catalog\Product\Basket::addProduct($fields);
//Отправляем в оформление или корзину
header('Location: /personal/order/index.php', true, 301);
exit();
?>
|