1. Главная
  2. Блог
  3. 1С-Битрикс
  4. Изменение порядка значений в фильтре 1С-Битрикс

Изменение порядка значений в фильтре 1С-Битрикс

Если в фильтре присутствует свойство типа строка, но значения свойств предполагаются как некие цифровые значения с единицами измерения, то на выходе получится, что к примеру значение 18 кВт, меньше 3 кВт и будет находиться выше по списку. Порядок фильтра по умолчанию предполагает, что по алфавиту 18 кВт выше чем 3 кВт, поэтому и такой результат: 

элементы фильтра 1с-битрикс не по порядку

Решение для данного случая есть, необходимо "заставить" фильтр "понимать" что в начале значений свойства цифры.

Находим файл result_modifier.php умного фильтра, в нашем случае по следующему пути, где template_s1 - папка с шаблоном.

/bitrix/templates/template_s1/components/bitrix/catalog.smart.filter/main/result_modifier.php

- в вашем случае путь может быть иной.

В этом файле, после первой строки:


<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
 

размещаем следующий код:


foreach($arResult["ITEMS"] as $k => &$prop){
    $values = [];
    foreach ($prop["VALUES"] as $key => $sortkey) {
        $values[$key]  = $sortkey['VALUE'];
    }
    array_multisort($values, SORT_NUMERIC, $prop['VALUES']);
    unset($values);
}

Предопределенная константа SORT_NUMERIC будет пытаться сравнить наши строковые значения как цифры.

В итоге получаем правильный порядок значений свойства в фильтре.

смена порядка элементов фильтра

Понравилась статья?

Поддержать нас рублями:

Нужна помощь? Обращайтесь!

Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий
Нажмите для звонка
Хотите заказать сайт?
Обращайтесь любым удобным способом и мы поможем подобрать интересный вариант для Вас!