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

Сортировка в фильтре по индексу в 1С-Битрикс

Недавно нам потребовалось для заказчика настроить сортировку значений одного из свойств фильтра в произвольном порядке, не по алфавиту. Логично в данном случае использовать поле сортировка. Установив значения сортировки для каждого значения свойства, мы обнаружили, что ничего не изменилось.

В прошлый раз мы настраивали сортировку строковых значений как числовых

Изменим код с учетом заказной сортировки значений свойства Brand.

Находим файл 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){
	if ( $k != '265' ) {//здесь указываем id нужного свойства инфоблока
    $values = [];
    foreach ($prop["VALUES"] as $key => $sortkey) {
    $values[$key]  = $sortkey['VALUE'];
    }
    array_multisort($values, SORT_NUMERIC, $prop['VALUES']);
    unset($values);
	} 
}

Фактически, этот код добавляет условие, если свойство не Brand (id 265), то сортируй по алфавиту с учетом константы SORT_NUMERIC (как и было раньше), и соответственно свойство Brand отсортируется по умолчанию (по полю сортировка).

фильтр сортировка по индексу 1С-Битрикс


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

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

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

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