Сортировка по цене, по алфавиту и по количеству
При всей очевидности доработка сайта интернет-магазина битрикс с использованием документации по сортировке не так очевидна. Возникла у меня задача при внедрении редизайна сделать сортировку по цене, по алфавиту и по количеству. В итоге рабочий вариант выглядит так:
if (
$_GET[«sort»] == «catalog_PRICE_1» ||
$_GET[«sort»] == «catalog_QUANTITY» ||
$_GET[«sort»] == «NAME»
//где catalog_PRICE_1 базовая розничная цена, catalog_QUANTITY -сортировка по количеству, ну а NAME и так понятно.
)
{
$arParams[«ELEMENT_SORT_FIELD»] = $_GET[«sort»];
$arParams[«ELEMENT_SORT_ORDER»] = $_GET[«method»];
$arParams[«PAGE_ELEMENT_COUNT»] = $_GET[«limit»];
//для обычной сортировки по возрастанию/убыванию используется метод asc/desc
//для количества любой кастомный метод, у меня limit
}else{}
<div_ class=»sort-catalog»>
<select_ onchange=»window.location.href=this.options[this.selectedIndex].value»>
<option_ VALUE=»» hidden disabled selected>по возрастанию</option>
<option_ VALUE=»?sort=catalog_PRICE_1&method=asc» <?if ($_GET[«method»] == «asc»):?>selected<?endif;?> >по возрастанию</option>
<option_ VALUE=»?sort=catalog_PRICE_1&method=desc» <?if ($_GET[«method»] == «desc»):?>selected<?endif;?> >по убыванию</option>
</select>
<select_ onchange=»window.location.href=this.options[this.selectedIndex].value»>
<option_ VALUE=»» hidden disabled selected>По алфавиту</option>
<option_ VALUE=»?sort=NAME&method=asc» <?if ($_GET[«method»] == «asc»):?>selected<?endif;?> >По алфавиту (А-Я)</option>
<option_ VALUE=»?sort=NAME&method=desc» <?if ($_GET[«method»] == «desc»):?>selected<?endif;?> >По алфавиту (Я-А)</option>
</select>
<select_ onchange=»window.location.href=this.options[this.selectedIndex].value»>
<option_ VALUE=»» hidden disabled selected>27 на страницу</option>
<option_ VALUE=»?sort=catalog_QUANTITY&limit=27″ <?if ($_GET[«limit»] == «27»):?>selected<?endif;?> >27 на страницу</option>
<option_ VALUE=»?sort=catalog_QUANTITY&limit=54″ <?if ($_GET[«limit»] == «54»):?>selected<?endif;?> >54 на страницу</option>
<option_ VALUE=»?sort=catalog_QUANTITY&limit=81″ <?if ($_GET[«limit»] == «81»):?>selected<?endif;?> >81 на страницу</option>
</select>
</div>
Все это дела помещаем в файл section_vertical.php, это если стандартный компонент каталога. Код вставляем перед catalog.section
На выходе получаем:
Ещё статьи:
15.02.2024
История о жадности или как клиент свободное место искал на сервере
Случилась у меня одна история с клиентом, который свободное место искал на сервере, но на самом деле это больше о жадности, но в итоге всё равно пришл...
ID: 466
08.11.2023
Хроники БУС упадка
На днях произошли очередные изменения в БУС битрикс. Полезный модуль bitrix.xscan включили в состав проактивной защиты и убрали из бесплатного сегмента...
ID: 465
26.07.2023
Kwork.com закрыл доступ для резидентов РФ
Доступ к выставлению услуг теперь ограничен "К сожалению, вынуждены сообщить, что резиденты РФ в настоящее время не могут использовать сайт Kwork...
ID: 463
Новые статьи в блоге:
20.05.2025
Во что можно влететь при обновлении или почему важно ТЗ
Получил запрос от клиента, что "нам просто нужно обновить битрикс", который автоматически тянет за собой перевод старого сайта на версию РНР...
ID: 619
20.05.2025
В устаревших версиях модулей от eSolutions и Маяк есть уязвимости.
Устаревшие версии eSolutions и Маяк - риск взлома вашего сайта. Обновите эти решения на вашем сайте.
ID: 618
18.05.2025
Успешный IT фрилансер - кто это и как им стать?
Кто такой фрилансер
Часто вижу темы с вопросом как найти работу фрилансером, как начать и т.д., но все задающие вопросы не понимают базу, саму суть
ID: 617