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