Добавить все свойства инфоблока в умный фильтр одним разом

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

Если у вас достаточно много свойств, в инфоблоке с товарами, например: больше 1000-чи, после интеграции с 1С или импорта из файлов поставщика. И необходимо добавить все свойства в умный фильтр. Поможет эта заметка.

Получаем все свойства и добавляем в умный фильтр

Добавлять большое количество свойств, в ручную, не вариант. Даже если нужны не все- проще снять чекбокс с ненужных, нежели прокликивать вручную... 50-100 и более свойств

Используем CIBlockProperty::GetList и CIBlockProperty::Update:


if (CModule::IncludeModule('iblock')) {
    $properties = CIBlockProperty::GetList(
        Array("sort" => "asc", "name" => "asc"),
        Array("ACTIVE" => "Y", "IBLOCK_ID" => 1)
    );
    while ($prop_fields = $properties->GetNext()) {
        $propId = $prop_fields['~ID'];
        $arFields = Array('SMART_FILTER' => 'Y', 'IBLOCK_ID' => 1);
        $addToSmart = new CIBlockProperty();
        if(!$addToSmart->Update($propId, $arFields))
            echo $addToSmart->LAST_ERROR;
    }
}

CIBlockProperty::GetList - вернул нам список всех свойств инфоблока (в моем случае с ID=1). Можете распечатать массив $prop_fields - если нужны все параметры и информация о свойствах этого инфоблока. Мне же, нужны только ID свойств: я загнал их в переменную $propId

Далее, методом CIBlockProperty::Update обновил параметр SMART_FILTER указав ему значение "Y"- тем самым добавив все свойства инфоблока в умный фильтр. Обратите внимание, что в $arFields я снова указал ID нужного инфоблока (1-ый, в моем случае)- это обязательно иначе метод не сработает

В общем-то и все. Получая и обновляя нужные параметры можете менять режим отображения, для разных типов свойств- получая их в массиве $prop_fields:
DISPLAY_TYPE- вид в умном фильтре
DISPLAY_EXPANDED- показывать / не показывать развернутым

Расширенный пример

Добавление в умный фильтр свойств с параметрами: Вид в фильтре: Выдающий список, Показывать развернутым: да


if (CModule::IncludeModule('iblock')) {
    $properties = CIBlockProperty::GetList(
        Array("sort" => "asc", "name" => "asc"),
        Array("ACTIVE" => "Y", "IBLOCK_ID" => 5)
    );
    while ($prop_fields = $properties->GetNext()) {
        $propId = $prop_fields['~ID'];
        $arFields = Array('SMART_FILTER' => 'Y', 'DISPLAY_TYPE' => "P", 'DISPLAY_EXPANDED' => "Y",  'IBLOCK_ID' => 5);
        $addToSmart = new CIBlockProperty();
        if(!$addToSmart->Update($propId, $arFields))
            echo $addToSmart->LAST_ERROR;
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

Инфресурс

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

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

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

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

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