Если в фильтре присутствует свойство типа строка, но значения свойств предполагаются как некие цифровые значения с единицами измерения, то на выходе получится, что к примеру значение 18 кВт, меньше 3 кВт и будет находиться выше по списку. Порядок фильтра по умолчанию предполагает, что по алфавиту 18 кВт выше чем 3 кВт, поэтому и такой результат:
Решение для данного случая есть, необходимо "заставить" фильтр "понимать" что в начале значений свойства цифры.
Находим файл 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 будет пытаться сравнить наши строковые значения как цифры.
В итоге получаем правильный порядок значений свойства в фильтре.