Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Сортировать товары по названию, цене и дате поступления в каталоге Битрикс

Просмотров: 39399

Достаточно часто заказчик просит вывести сортировку по цене, новым поступлениям и названию в каталоге товаров работающего на Битрикс. Сделать это достаточно просто, тем более можно подсмотреть в пример реализации в типовом интернет магазине, что идет в комплекте со старшими редакциями системы у правления.

Но можно воспользоваться вот таким способом:

В section.php добавляем:

 
<?if ($_GET["sort"] == "name" || 
$_GET["sort"] == "catalog_PRICE_3" ||
$_GET["sort"] == "property_PRODUCT_TYPE" ||
$_GET["sort"] == "timestamp_x"){
$arParams["ELEMENT_SORT_FIELD"] = $_GET["sort"];
$arParams["ELEMENT_SORT_ORDER"] = $_GET["method"];
}else{}?>

В template.php:

 
 <p>Сортировать по: 
   <a <?if ($_GET["sort"] == "name"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=name&method=asc"> 
     Названию 
   </a> 
   
   <a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=asc"> 
     Цене 
   </a> 

   <a <?if ($_GET["sort"] == "timestamp_x"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=timestamp_x&method=desc"> 
     Новые поступления 
   </a> 
   </p>

Пример работы:

Сортировка в каталоге битрикс
Евгений Евгений 25.10.2016
Возник вопрос а как сделать сортировку в news.list
пытался так
В /bitrix/news/novnov/section.php
Код
<?
$arParams["SORT_BY1"] = !empty(trim($arParams["SORT_BY1"]))? trim($arParams["SORT_BY1"]) : "NAME";$arParams["SORT_ORDER1"] = !empty(trim($arParams["SORT_ORDER1"]))? trim($arParams["SORT_ORDER1"]) : "ASC";   

?>

а в /news/novnov/bitrix/news.list/template.php
Код
<p class="sort">Сортировка:

    <a <?if ($_GET["sort"] == "NAME"):?> class="active" <?endif;?>       href="/novosti/?sort=NAME&method=asc">название</a>       
 
      
</p>
Не работает
Антон. К 18.08.2017
Добрый вечер, Михаил.
Подскажи как отсортировать товар со скидками что бы товар со скидкой оказался вверху страницы?
svetlana.sukova 20.09.2017
Добрый день!
Подскажите пожалуйста как реализовать эту сортировки чтоб не было проблем с кешем?
Также сортировка по цене не работает для товаров с торговыми предложениями, есть ли какое-то решение для такой проблемы?
Спасибо :)
Михаил Базаров 20.09.2017
Цитата
svetlana.sukova написал:
Добрый день!
Подскажите пожалуйста как реализовать эту сортировки чтоб не было проблем с кешем?
Также сортировка по цене не работает для товаров с торговыми предложениями, есть ли какое-то решение для такой проблемы?
Спасибо
ПРоблем с кешем, быть не должно (во всяком случае не сталкивался)
По предложениям, вот так не "рассказать" в рамках ответа. Быть может запишу видео, следите на ютуб канале
Jekas 04.08.2018
А подскажите как сделать сортировку вверх-вниз при клике на одну ссылку?
Михаил Базаров 05.08.2018
Цитата
Jekas написал:
А подскажите как сделать сортировку вверх-вниз при клике на одну ссылку?
Можно по простому, меняя порядок сортировки asc / desc
Типа того
Код
<a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> 
href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=asc"> 
Цене от дешевых
</a> 

<a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> 
href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=desc"> 
Цене от дорогих
</a> 
У той, которая нажатая, будет класс actived - с помощью него, просто прятать ее в display:none
Jekas 05.08.2018
Цитата
Михаил Базаров пишет:
Цитата
Jekas написал:
А подскажите как сделать сортировку вверх-вниз при клике на одну ссылку?
Можно по простому, меняя порядок сортировки asc / desc
Типа того
Код
 <a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> 
href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=asc"> 
Цене от дешевых
</a> 

<a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> 
href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=desc"> 
Цене от дорогих
</a> 
 
У той, которая нажатая, будет класс actived - с помощью него, просто прятать ее в display:none
Только оно будет для двух случаев одинаково и тут не проверить (
Михаил Базаров 05.08.2018
Цитата
Jekas написал:
Только оно будет для двух случаев одинаково и тут не проверить (

Ну да, что то не подумал  :)
Тогда, надо подумать. Можно изначальные параметры переписать и для каждого направления сортировки создать отдельную логику в
Код
<?if ($_GET["sort"] == "name" || 
$_GET["sort"] == "catalog_PRICE_3" || 
$_GET["sort"] == "property_PRODUCT_TYPE" || 
$_GET["sort"] == "timestamp_x"){ 
$arParams["ELEMENT_SORT_FIELD"] = $_GET["sort"]; 
$arParams["ELEMENT_SORT_ORDER"] = $_GET["method"]; 
}else{}?>
Jekas 11.08.2018
Цитата
Михаил Базаров пишет:
Цитата
Jekas написал:
Только оно будет для двух случаев одинаково и тут не проверить (
Ну да, что то не подумал
Тогда, надо подумать. Можно изначальные параметры переписать и для каждого направления сортировки создать отдельную логику в
Код
 <?if ($_GET["sort"] == "name" || 
$_GET["sort"] == "catalog_PRICE_3" || 
$_GET["sort"] == "property_PRODUCT_TYPE" || 
$_GET["sort"] == "timestamp_x"){ 
$arParams["ELEMENT_SORT_FIELD"] = $_GET["sort"]; 
$arParams["ELEMENT_SORT_ORDER"] = $_GET["method"]; 
}else{}?>
 
А можете показать на примере, если конечно Вам не сложно )
a13z2005@yandex.ru 18.07.2019
Добрый день Михаил.
Подскажите пожалуйста - используя вашу сортировку в уроке - как выставить еще правило дял сортировки по умолчанию (к примеру по свойству)?

Записная книжка разработчика

Примерно с 2013-го года пишу заметки по разработке сайтов на Битрикс.
Вы можете задавать уточняющие вопросы в комментариях- отвечаю или дополняю заметки по возможности.

Вывести новости из конкретного раздела инфоблока Битрикс Просмотров: 53464 Бывает что требуется вывести конкретные новости или статьи из одного раздела инфоблока в Б... Снять ограничение на количество символов в комментарии к заказу магаз... Просмотров: 11554 Как многим известно, в интернет-магазине на Битрикс имеется ограничение на количество симв... Ссылка и название раздела в списке новостей Битрикс Просмотров: 10518 Если нужно вывести название раздела инфоблока в котором находится конкретный элемент/новос... Вывести все товары, с постраничной навигацией, из всех разделов инфоб... Просмотров: 28421 По сути, эта заметка, небольшой лайфхак. Достаточно часто нужно, в корне каталога, в ТОП-е... Дать пользователю возможность быстро отредактировать материал Просмотров: 4366 На одном из разрабатываемых сайтов, пользователи формирую его контент. После регистрации, ... Установка вебсервера на Apple M1 (нативный ARM стек), оптимизированны... Просмотров: 6143 Появилась задачка, установить стек MAMP (macOS, Apache, MYSQL, PHP) на рабочий ноутбук с п... Прятать или показывать описание раздела каталога Просмотров: 598 В новых компонентах и шаблонах catalog.section есть не документированный и не выводимый па... Информация о заказах и содержимое корзины текущего пользователя. Просмотров: 11778 В процессе разработки сайта могут понадобиться рецепты приведенные ниже. Использовать можн... Спойлер в списке новостей Битрикс Просмотров: 11287 Иногда нужно сделать спойлеры в копонентах Битрикс, в основном конечно, имеет смысл при оч... Удалить товары из корзины, если есть определенные товары. Просмотров: 880 Задача: если в корзину добавлены товары с определенным свойством, нужно удалить из корзины... Определить местоположение пользователя и показать магазины поблизости... Просмотров: 1168 Задача: в мобильном приложении, которое открывает сайт на 1С-Битрикс внутри себя, нужно оп... Создание скидки на общую сумму покупки в Битрикс корзине Просмотров: 26961 Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать м... Вывести информацию, только на первом уровне раздела каталога, в 1С-Би... Просмотров: 4254 Задача: на сайте, в каталоге, выводится два фильтра - боковой и верхний. Оба компонента по... Простой WEB сервер на ubuntu, для Битрикс Просмотров: 34480 Расскажу как по быстрому сконфигурировать WEB сервер для работы с Битрикс. Безо всяких ngi... Валидация пароля и подтверждения при регистрации в битрикс Просмотров: 14266 Встала задачка сделать валидацию пароля и его подтверждения в стандартной форме регистраци... Вывести артикул в печатную форму бланка заказа Просмотров: 386 Задача: в печатную форму бланка заказа добавить артикулы товаров и данные о пользователе. ... Показать пользователю накопительную скидку за все сделанные заказы, и... Просмотров: 1758 Задача: показать, текущему авторизованному, пользователю сумму всех выполненных заказов и ... Очистка корзины в 1С-Битрикс одним нажатием Просмотров: 27754 В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием... Цвета торговых предложений из Highload инфоблоков в списке товаров Просмотров: 14088 Подвернулся на доработку очень старый сайт, работал еще на 11-ой версии Битрикс. Выполнили... Самодельная форма добавления элемента на API Битрикс Просмотров: 42562 Компонент iblock.element.add.form написан таким образом, что вы не сможете (не попотев изр...