Заполнить инфоблок брендов из свойства инфоблока с товарами

Просмотров: 1877

Задача: в интернет-магазине есть инфоблок с товарами, загружаемый из 1С, у которого заполнено свойство "Производитель" и оно является списком. Нужно заполнить отдельный инфоблок этими производителями, чтобы не наполнять его вручную.

Это может пригодиться для реализации другой заметки: Вывести товары бренда в его описании
Заполнить инфоблок брендов из свойства инфоблока с товарами

Получаем значения множественного свойства "Список"

Для этого нам достаточно воспользоваться методом CIBlockPropertyEnum::GetList, который по коду свойства получит все его значения (впрочем, и остальную информацию получит, но нас интересует только VALUE)

use Bitrix\Main\Loader;

Loader::includeModule('iblock');

$arTrans = array("replace_space" => "-", "replace_other" => "-");
$el = new CIBlockElement;

$property_enums = CIBlockPropertyEnum::GetList(
    array(
        "VALUE" => "ASC",
    ),
    array(
        "IBLOCK_ID" => 10, // ID инфоблока каталога
        "CODE" => "CML2_MANUFACTURER"
    )
);

while ($enum_fields = $property_enums->GetNext()) {
    $arFields = array(
        "IBLOCK_ID" => 7, // ID инфоблока производителей
        "NAME" => strip_tags($enum_fields['VALUE']),
        'ACTIVE' => 'Y',
        'CODE' => Cutil::translit($enum_fields['VALUE'], "ru", $arTrans),
    );
    $NewElementId = $el->Add($arFields);
}

Объяснение кода:

  • Подключаем модуль информационных блоков (iblock), чтобы иметь возможность работать с ними.
  • Задаем параметры для транслитерации, чтобы использовать их для создания символьных кодов.
  • Создаем экземпляр класса CIBlockElement, который будет использоваться для добавления новых элементов в инфоблок.
  • Получаем все значения свойства "Производитель" из инфоблока с товарами, отсортированные по значению.
  • Проходим по всем значениям, полученным на предыдущем шаге, и добавляем их в инфоблок производителей.

Что происходит в коде:

Модуль iblock загружается для работы с информационными блоками.

Настраиваются параметры транслитерации для создания символьных кодов.

Создается экземпляр класса CIBlockElement для добавления элементов в инфоблок.

Метод CIBlockPropertyEnum::GetList используется для получения всех значений свойства "Производитель" из инфоблока с товарами.

В цикле while происходит проход по всем значениям свойства "Производитель":

  • Создаются массивы данных для новых элементов в инфоблоке производителей.
  • Используется метод Add для добавления этих элементов в инфоблок.

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

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

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.