в корзине битрикс компонента sale. basket. basket для вывода каждого товара используется шаблон js шаблон который лежит в файле item-ajax. php туда данные попадают из mutator. php в нем мы и будем добавлять нужные нам свойства
в моем примере мы будем добавлять к каждому основному товару дополнительные товары (например так можно к основному товара прикреплять аксессуары)
находим строку “ foreach ($this->basketItems as $row)” тут то и перебирается каждый товар и его свойства
В переменную $db_props мы сохраняем дополнительный товар который храниться в свойстве “MAYSUIT” и затем получаем его название картинку цену и id
Затем передаем это в шаблон в с помощью “’MAYTOVARNAME’ => $dopCatalog”
foreach($this - > basketItems as $row)
{
$valuesMaysult = []; // Очистка массива для каждого товара
$dopCatalog = []; // Создаем массив для хранения всех привязанных товаров
// Получаем значения свойства MAYSUIT
$db_props = CIBlockElement::GetProperty(2, $row['PRODUCT_ID'], array("sort" => "asc"), array("CODE" => "MAYSUIT"));
while ($ar_props = $db_props - > GetNext()) {
// Проверка, что у свойства MAYSUIT есть значение
if (!empty($ar_props['VALUE'])) {
$valuesMaysult[] = $ar_props['VALUE'];
// Настраиваем выборку для привязанных товаров
$arSelect = ["ID", "NAME", "DATE_ACTIVE_FROM", "DETAIL_PICTURE"];
$arFilter = ["IBLOCK_ID" => 2, "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "ID" => $ar_props['VALUE']];
$res = CIBlockElement::GetList([], $arFilter, false, ["nPageSize" => 50], $arSelect);
// Сохраняем каждый привязанный товар в $dopCatalog
while ($ob = $res - > GetNextElement()) {
$arFields = $ob - > GetFields();
$priceData = \Bitrix\ Catalog\ PriceTable::getList([
'filter' => [
'PRODUCT_ID' => $arFields["ID"],
'CATALOG_GROUP_ID' => 1 // Замените 1 на ID вашей ценовой группы, если нужно
]
]) - > fetch();
$dopCatalog[] = [
'NAME' => $arFields["NAME"],
'IMG' => CFile::GetPath($arFields["DETAIL_PICTURE"]),
'ID' => $arFields["ID"],
'PRICE' => $priceData["PRICE"]
];
}
}
}
$rowData = array(
'ID' => $row['ID'],
'PRODUCT_ID' => $row['PRODUCT_ID'],
'NAME' => $row['~NAME'] ? ? $row['NAME'],
'QUANTITY' => $row['QUANTITY'],
// Разные данные которые передаем в шаблон
'MAYTOVARNAME' => $dopCatalog,
'BUTTONCLASS' => $buttonClass
);
unset($dopCatalogName);