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

Если у вас достаточно много свойств, в инфоблоке с товарами, например: больше 1000-чи, после интеграции с 1С или импорта из файлов поставщика. И необходимо добавить все свойства в умный фильтр. Поможет эта заметка.
Здравствуйте, Михаил.
А как в эти условия добавить исключения свойств ?
Есть свойства которые не нужны в умном фильтре.
Вот по этому методу почитайте
https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/getlist.php
Можно использовать поля свойств в фильтре.
Например: PROPERTY_TYPE => array(S, L)
Тогда, для добавления в фильтр отберутся только с типом "Строка" и "Список"

Доп запросом, можно получить параметр HINT (описание свойства) что-то написать в это поле, у не нужных свойств и исключить их условием
if (empty($arProperty['HINT']))  
У нас 1500 свойств и все типа строка и список (прилетают из 1с). С отбором property_type=>arrays(S,L) не получится, а описания свойств почему то затираются при обмене. А ваш метод в статье хотел использовать чтобы при очередном обмене не выставлять потом для новых свойств признак присутствия в фильтре
сделал вот так:
Код
//Выводим свойства в умный фильтр

if (CModule::IncludeModule('iblock')) {
    $properties = CIBlockProperty::GetList(
        Array("sort" => "asc", "name" => "asc"),
        Array("ACTIVE" => "Y", "IBLOCK_ID" => ID-инфоблока)
    );
    while ($prop_fields = $properties->GetNext()) {
      $propId = $prop_fields['~ID'];
//проверяем заполнение описания свойства для исключения из списка фильтра
      if(!empty($prop_fields['HINT'])):
        $arFields = Array('SMART_FILTER' => 'N', 'IBLOCK_ID' => ID-инфоблока);
      else:
        $arFields = Array('SMART_FILTER' => 'Y', 'IBLOCK_ID' => ID-инфоблока);
      endif;

      $addToSmart = new CIBlockProperty();
      $addToSmart->Update($propId, $arFields);
    }
}
Добавлю, что если в инфоблоке присутствуют разделы, то смартфильтр ещё и в инфоблоке нужно прописать, тогда при редактировании секции появится вкладка "Свойства элементов":
Код
$iblock = new \CIBlock();      
$iblock->Update($iblockId, [
    'SECTION_PROPERTY' => 'Y',
],);
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Вывести свойство отдельно ото всех или исключить из всех

Иногда, на сайте, под управлением 1С-Битрикс, нужно вывести какое-то конкретное свойство отдельно ото всех, или вообще н...

Вывести информацию, только на первом уровне раздела каталога, в 1С-Битрикс

Задача: на сайте, в каталоге, выводится два фильтра - боковой и верхний. Оба компонента подключены в файле section.php к...

Менять большую картинку, при клике на маленькую, в детальной карточке

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

Вывести список всех пользователей с необходимой информацией

Если нужно, на какой-либо странице сайта, вывести всех пользователей из группы "Зарегистирированные пользователи", прост...

Как вывести свойства инфоблока по отдельности и немного плюшек не в тему

Если у инфоблока несколько свойств- то при выводе их всех, скажем в детальном описании новости, они выводятся все вместе...

Показать только один тип цены в каталоге Битрикс

Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на сайте имеется несколько групп о...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...

Отфильтровать элементы в Битрикс по свойству привязка к разделам

При создании достаточно сложных интернет-магазинов на Битрикс, иногда встает задача помимо обычной навигации каталогу со...

Адаптивное гамбургер меню для битрикс

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