Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Сортировка элементов в каталоге

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
В каталоге есть фильтр. Нужно сделать так, чтобы первый и второй товар были определенного бренда, а все остальные товары сортировались по просмотрам.

К примеру нужно найти шину с шириной 205. Компонент должен первые два товара поставить с брендом Michlen а все остальные должны уже шины отсортированы по просмотрам.
Такое только через модификацию результата. Сейчас готовый код не напишу (со временем напряженка), но подсказка:
- В result_modifier (catalog.section) проверяем применен ли фильтр (будет не пустой массив с отбором).
- В результатах фильтра будут ID элементов.
- По ID элемента находим те у которых нужный бренд.
- С помощью array_slice вырезаем их из общего потока.
- C помощью array_map выделяем в отдельный массив.
- Совмещаем с array_merge, при этом массив вырезанных должен быть первым (элементы окажутся вверху)

Это быстрое решение, которое пришло в голову. Но если подумать с часок, может придет что-то более изящное :)
Да, сделал такой вариант. Искал в $arResult['ITEMS'] нужные товары и ставил их вперед. Но этот вариант работает не часто, так как в каталоге есть пагинация и на странице всего 20 товаров и соответственно в $arResult['ITEMS'] их тоже всего 20. А на странице может не оказаться просто таких товаров, а они могут быть на следующей, потому поиск может и не найти товаров.
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Загрузить картинки
 

Блог-note Заметки по 1С-Битрикс