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

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

68
07.02.2019

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

Достаточно просто можно получить нужную информацию одним запросом к базе данных. Для этого в 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 родительских товаров и, заодно, информацию о родительских товарах.



Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

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

captcha

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