Назад к списку

Как вывести свойство у каждого товара в корзине Битрикс

в корзине битрикс компонента 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);
 
Услуги по 1С-Битрикс

CMS 1С-Битрикс, Bitrix24 CRM и 1С:Предприятие — в чем разница?

Подробнее

QuadCRM: Революционный Инструмент для Парсинга и Автоматизации Интернет-Магазинов

Подробнее

Как выбрать Аспро?

Подробнее