Получение информации о товаре в корзине

При работе с каталогами, с торговыми предложениями, достаточно распространенной задачей является получение информации о родительском товаре для торгового предложения, добавленного в корзину.

Достаточно просто можно получить нужную информацию одним запросом к базе данных. Для этого в result_modifier.php шаблона компонента корзины пишем следующий код:

$arProductIDs = array_flip(array_map(function ($item) {
	return $item['PRODUCT_ID'];
}, $arResult['GRID']['ROWS']));

$arFilter = array('ID' => array_keys($arProductIDs));
$arSelectFields = array("ID", "IBLOCK_ID", "DETAIL_PAGE_URL", "NAME", "PROPERTY_CML2_LINK", "PROPERTY_CML2_LINK.DETAIL_PAGE_URL", "PROPERTY_CML2_LINK.NAME");
$rsElements = CIBlockElement::GetList($arOrder, $arFilter, FALSE, FALSE, $arSelectFields);
while ($arElement = $rsElements->GetNext())
{
	if(intval($arElement['PROPERTY_CML2_LINK_VALUE'])>0){
		$arProduct = [
			'NAME'=>$arElement['PROPERTY_CML2_LINK_NAME'],
			'DETAIL_PAGE_URL'=>$arElement['PROPERTY_CML2_LINK_DETAIL_PAGE_URL'],
		];
	} else {
		$arProduct = [
			'NAME'=>$arElement['NAME'],
			'DETAIL_PAGE_URL'=>$arElement['DETAIL_PAGE_URL'],
		];
	}

	$arProductIDs[$arElement['ID']] = $arProduct;
}

foreach ($arResult['GRID']['ROWS'] as $k=>$arRow){
	$arResult['GRID']['ROWS'][$k]['PRODUCT_DATA'] = $arProductIDs[$arRow['PRODUCT_ID']];
	if(!empty($arResult['GRID']['ROWS'][$k]['PRODUCT_DATA']) && strlen($arResult['GRID']['ROWS'][$k]['~DETAIL_PAGE_URL'])<=0){
		$arResult['GRID']['ROWS'][$k]['DETAIL_PAGE_URL'] = $arResult['GRID']['ROWS'][$k]['PRODUCT_DATA']['DETAIL_PAGE_URL'];
		$arResult['GRID']['ROWS'][$k]['~DETAIL_PAGE_URL'] = $arResult['GRID']['ROWS'][$k]['PRODUCT_DATA']['DETAIL_PAGE_URL'];
	}
}

Таким образом мы обновим массив $arResult['GRID']['ROWS'], содержащий информацию об элементах корзины.

Для начала мы получили из всех элементов корзины идентификаторы товаров, а затем, имея эти ID получили ID родительских товаров и, заодно, информацию о родительских товарах.

Количество показов: 2309
07.02.2019

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.