Полезные статьи по разработке сайта на системе управления 1С-Битрикс. Программирование. Верстка.

Вывод сопутствующих товаров в Битрикс по привязке к элементам по внешнему коду

  3
Чтобы реализовать вывод сопутствующих товаров в Битрикс по привязке к элементам по внешнему коду, или сделать вывод связанных элементов инфоблока 1С-Битрикс с текущим элементом. На сайте должно быть создано множественное свойство RECOMMENDED_IDS (тип Привязка к элементам по внешнему коду). Для вывода товаров можно воспользоваться следующим кодом:
 <?php
// ID текущего элемента
$elementId = $arResult["ID"];

// Получаем значения свойства (EXTERNAL_ID)
$recommendedExternal = [];
$res = CIBlockElement::GetProperty(
    $arParams["IBLOCK_ID"],
    $elementId,
    ["sort" => "asc"],
    ["CODE" => "RECOMMENDED_IDS"]
);

while ($prop = $res->Fetch()) {
    if (!empty($prop["VALUE"])) {
        $recommendedExternal[] = $prop["VALUE"];  // это EXTERNAL_ID
    }
}

// Если пусто — не выводим раздел
if (empty($recommendedExternal)) {
    return;
}

// Конвертируем EXTERNAL_ID → ID элементов
$recommendedIds = [];
$res = CIBlockElement::GetList(
    [],
    [
        "IBLOCK_ID"     => $arParams["IBLOCK_ID"],
        "EXTERNAL_ID"   => $recommendedExternal
    ],
    false,
    false,
    ["ID"]
);

while ($item = $res->Fetch()) {
    $recommendedIds[] = $item["ID"];
}

// Готовим фильтр для catalog.section
$GLOBALS['arrRecommendedFilter'] = [
    "ID" => $recommendedIds
];
?>

<?php
$APPLICATION->IncludeComponent(
    "bitrix:catalog.section",
    "recommended",
    [
        "IBLOCK_ID"         => $arParams["IBLOCK_ID"],
        "SECTION_ID"        => "",
        "FILTER_NAME"       => "arrRecommendedFilter",
        "PAGE_ELEMENT_COUNT"=> 8,
        "SHOW_ALL_WO_SECTION" => "Y",
        // остальные параметры...
    ],
    $component
);
?>
  • Получаем EXTERNAL_ID из свойства RECOMMENDED_IDS.
  • Делаем выборку реальных ID товаров по этим EXTERNAL_ID.
  • Передаём ID в FILTER_NAME для bitrix:catalog.section.
  • Компонент корректно выводит товары.
Данный код можно использовать в карточке товара компонента bitrix:catalog.element для вывода сопутствующих товаров.