Информация о категории товара в корзине Битрикс

0
1158

В файле result_modifier.php компонента корзины вставляем код:

$arProducts = [];
	foreach ($arResult['GRID']['ROWS'] as $arRow)
	{
		$arProducts[$arRow['PRODUCT_ID']] = [];
	}

	if (!empty($arProducts))
	{
		$arSelect = Array("ID", "IBLOCK_ID", "PROPERTY_CML2_LINK", "PROPERTY_CML2_LINK.IBLOCK_SECTION_ID", "IBLOCK_SECTION_ID");
		$arFilter = Array("ID" => array_keys($arProducts));
		$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
		$arSections = array();
		while ($arFields = $res->GetNext())
		{
			if (intval($arFields['PROPERTY_CML2_LINK_IBLOCK_SECTION_ID']) > 0)
			{

				$arSections[$arFields['PROPERTY_CML2_LINK_IBLOCK_SECTION_ID']] = [];
			} else
			{
				$arSections[$arFields['IBLOCK_SECTION_ID']]=[];
			}
			$arProducts[$arFields['ID']] = $arFields;
		}

		if (!empty($arSections))
		{
			$SectFilter = Array('ID' => array_keys($arSections),"IBLOCK_ID"=>23);
			$Sect_list = CIBlockSection::GetList(Array("NAME" => "ASC"), $SectFilter, false,
				array('ID','NAME','IBLOCK_ID','IBLOCK_SECTION_ID','SECTION_PAGE_URL'));
			while ($Section = $Sect_list->GetNext())
			{
				$arSections[$Section['ID']] = $Section;
			}

			foreach ($arProducts as $pid=>$arProduct)
			{
				$arProducts[$pid]['SECTION'] = $arSections[(
					intval($arProduct['PROPERTY_CML2_LINK_IBLOCK_SECTION_ID'])>0
				) ? $arProduct['PROPERTY_CML2_LINK_IBLOCK_SECTION_ID'] : $arProduct['IBLOCK_SECTION_ID']];
			}
		}

		foreach ($arResult['GRID']['ROWS'] as $key => $arRow)
		{
			$arIblockElement = $arProducts[$arRow['PRODUCT_ID']];
			$arResult['GRID']['ROWS'][$key]['SECTION'] = $arIblockElement['SECTION'];
		}
	}

В шаблоне корзины при выводе элемента

$arItem['SECTION']['ID']

будет выводиться id категории.

 

Что бы вывести, например, навигационную цепочку всех категорий текущего товара, можно записать такой код (у меня это basket_items.php):

 

$navi = '';
$resSection = CIBlockSection::GetNavChain(false, $arItem['SECTION']['ID']);
while ($arSection = $resSection->GetNext()) {
	$array_sections = $arSection;
	$navi .= $arSection['NAME'].' / ';
}
// Навигационная строка товара
$navi = mb_substr($navi,0,-3);

В итоге в переменной $navi будет сохранена навигационная цепочка (хлебные крошки) каждого товара.

 

 

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь