Достаточно распространенная задача, когда в корзине нужно получить информацию о разделе, в котором размещается товар, добавленный в корзину. Если у вас каталог товаров без торговых предложений - тут все просто. Но что делать, если в каталог добавляются торговые предложения? Для этого нужно немного модифицировать запрос к базе данных о категории.
Ниже представлен код, который получает информацию о категориях товаров и добавляет их в результирующий массив компонента корзины.
В файле 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']; } }
Все, дальше в компоненте можно спокойно пользоваться нужными полями - выводить название раздела (вместе со ссылкой).
Разработка сайта
Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...
Сопровождение сайта
Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение
Работы по сайту
Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.