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

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

Если корзина должна учитывать нестандартные свойства, скидки или сценарии оформления, потребуется кастомизация сайта на 1С-Битрикс под ваши бизнес-задачи.

в корзине битрикс компонента 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. Проверьте, что свойство активно и доступно в нужной сущности каталога.
  2. Убедитесь, что компонент корзины получает необходимые поля и свойства.
  3. Посмотрите структуру массива товара в отладчике до изменения шаблона.
  4. Выведите значение с экранированием и обработайте пустое свойство.
  5. Проверьте обновление корзины, изменение количества и удаление товара.

Что важно для продакшена

Изменяйте копию шаблона в локальной директории, а не системный файл компонента. После изменения очистите кеш компонента и проверьте корзину для авторизованного и гостевого пользователя. Отдельно протестируйте мобильную версию: длинные значения свойств не должны ломать таблицу и кнопку оформления заказа.

Связанные задачи: доработка сайта, исправление ошибок Битрикс и создание интернет-магазина.

Услуги по 1С-Битрикс

Создание Google Merchant Feed для интернет-магазина на Битрикс: полное руководство

Подробнее

Чем отличается «1С-Битрикс: Стандарт» от «1С-Битрикс: Малый бизнес»? и почему не «1С-Битрикс: Старт»

Сравнение редакций 1С-Битрикс: Стандарт, Малый бизнес и Старт — возможности каталога, магазина, SEO, интеграций и критерии выбора.

Подробнее

Что такое компоненты Битрикс и как они упрощают разработку сайта?

Что такое компоненты 1С-Битрикс, чем отличаются системные и собственные компоненты, как работают шаблоны, кеширование и result_mod...

Подробнее