Как сделать сортировку товаров в Битрикс?

Здравствуйте.

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

Перед списком товаров располагается верхняя панель, куда нужно добавить сортировку по цене и популярности (туда и обратно). Плюс рядом нужно поместить выбор количества отображаемых товаров на странице (к примеру, по 20, 30 и т.д.).

Нюанс 1: Обе сортировки должны быть помещены в select или какой-нибудь dropdown.

Нюанс 2: Было бы здорово, если бы выбранные параметры сортировок сохранялись.

Быть может кто-то недавно решал подобную задачу и сохранились какие-то наработки.

Спасибо за любую помощь.
  • Вопрос задан
  • 1305 просмотров
Пригласить эксперта
Ответы на вопрос 1
maler1988
@maler1988
Web-программист (1С Bitrix)
Если вы используете комплексный компонент каталога bitrix.catalog, вам необходим в файл section.php шаблона до вызова catalog.section сделать сам блок с ссылками сортировки. Оформляете как хотите ul li например. В ссылках передаёте параметр sort_field и sort_order, обрабатываете их и устанавливаете в $arParams нужные значения.

Ниже этот $arParams будет влиять на компонент catalog.section, код примерно такой:

if($_REQUEST["sort_field"] && $_REQUEST["sort_order"]) {
	$arParams["SORT_BY1"] = $sortFields[$_REQUEST["sort_field"]];
	$arParams["SORT_ORDER1"] = $_REQUEST["sort_order"];
} else {
	$arParams["SORT_BY1"] = "PROPERTY_NUMBER";
	$arParams["SORT_ORDER1"] = "DESC";
}

//ниже вызов компонента


а чтобы параметры сохранялись в ссылках используйте функцию GetCurPageParam:
<a href="<?=$APPLICATION->GetCurPageParam("sort_field=".$_REQUEST["sort_field"]."&sort_order=".$_REQUEST["sort_order"]."", array("sort_field", "sort_order", "PAGEN_1"));?>" >Сортировка по цене</a>


в общем и целом как-то так. Работает безотказно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы