Сортировка значений филтров по алфавиту в компоненте bitrix:catalog.smart.filter

Как оказалось, в Битриксе у компонента bitrix:catalog.smart.filter нет параметров для сортировки значений в фильтрах. Однако, задача есть, и нужно придумать как сделать сортировку значений в фильре по алфавиту.

Для решения этой задачи можно добавить в конец файла result_modifier.php в шаблоне вызова компонента bitrix:catalog.smart.filter следущий код:

// Массив свойств, которые нужно отсортировать, с указанием функции сортировки
$resortProps = [
	"BRAND" => "sortByName",
	"SERIES" => "sortByName",
	"STRANA" => "sortByName",
];

// Перебираем список выводимых свойст для отображения в фильтре
foreach($arResult["ITEMS"] as &$filterItem){

	
	// Проверяем, присутствует ли свойство в списке для сортировки
	if(isset($resortProps[$filterItem["CODE"]])){


		// Еще одна проверка на наличие значений, нужно для исключения ошибок
		if(count($filterItem["VALUES"])){

			// Вызов функции сортировки значений свойства
			usort($filterItem["VALUES"], $resortProps[$filterItem["CODE"]]);
		}
	}
}

// функция сортировки массива по значению
// внутри этой функции задается логика сортировки элментов массива
function sortByName($a, $b) {
    if ($a['VALUE'] > $b['VALUE']) {
        return 1;
    } elseif ($a['VALUE'] < $b['VALUE']) {
        return -1;
    }
    return 0;
}

Вот и все, в шаблоне компонента ничего изменять не нужно ))

По желанию можно вытащить в настройки переменную $resortProps и управлять ей не погружаясь в код, но как показала практика, подобные случаи крайне редки, поэтому обычно это делается разово и забывается до следующего проекта.

Желаю приятного пользования, буду рад лайкам и комментариям.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Посты по теме

CRON для сайта

Как сделать свой сайт быстрее и эффективнее путем настройки фоновых заданий на CRON

Настройка CRON для VtigerCRM

Для того, чтобы правильно работали фоновые задания в CRM системе обязаельно нужно настроить запуск исполняющего файла по CRON. Для этого в VtigerCRM есть специальные файлы для Linux и Windows серверов Все что нужно сделать, это добваить в планировщик CRON на линксовом сервере выполнение задачи ~/cron/vtigercron.sh с интервалом 1 раз в минуту.

Исправление PHP Parse error: Unclosed '{' on line в Битриксе

Иногда в Битриксе может возникать ошибка “PHP Parse error: Unclosed ‘{‘ on line …”. Обычно такую ошибку можно обнаружить после переезда на новый хостинг. Для испраления этой ошибки необходимо установить значение on параметра short_open_tag в настройках PHP. Делается это в панели управления хостингом.

Что делать если Bitrix MySQL использует все ресурсы процессора

Однажды столкнулся с интересной проблемой, MySQL стал пожирать полностью все ресурсы процессора. Причем “захват” ресурсов происходил плавно с выраженными скачками на графике мониторинга Провалы на графике это ручной перезапуск службы MySQL Причина утечки процессорных ресурсов под MySQL В поисках причины были исследованы длинные запросы к БД и перепробваны различные комбинации настроек MySQL, но ничего не […]

Как изменить язык сайта Битрикс для раздела или страницы

Легкий способ локально изменить ящык сайта Bitrix для отдельных страниц или разделов без применения механизма многосайтовости.