Сортировка по цене и названию в 1С-Битрикс
Старая проблема, которую Битрикс так и не намеревается решать удобным для пользователей способом - сортировки по цене и названию. Данный тип сортировки особенно популярен у посетителей, привыкших к функционалу VirtueMart и WebAsyst Shop-Script
Инструкцию по кастомизации компонента представляет один из самых сертифицированных Битрикс специалистов - @Ирина Скаржинец.
Как сделать сортировку по цене или названию в 1С-Битрикс?
C помощью админ панели Вашего сайта или любимого редактора открываем файл
/bitrix/templates/ваш_сайт/components/bitrix/catalog/шаблон_каталога/section.php
Находим место подключения компонента - список категорий каталога - bitrix:catalog.section
<?$APPLICATION->IncludeComponent(вставляем перед ним
"bitrix:catalog.section
<?if ($_GET["sort"] == "price") { $arParams["ELEMENT_SORT_FIELD"] = "catalog_PRICE_2"; } if ($_GET["sort"] == "name") { $arParams["ELEMENT_SORT_FIELD"] = "NAME"; } ?> Сортировать по: <a href="?sort=price">цене</a> | <a href="?sort=name">названию</a>
В представленном примере, значение: catalog_PRICE_2 - это базовая цена, имеющая id=2 в списке типов цен Битрикс
Сортировка по убыванию или возрастанию цены
При желании можно пойти еще дальше и добавить возможность сортировать по возрастанию или убыванию стоимости. Для этого, добавить в представленный выше код простое условие
<?if ($_GET["sort"] == "price") { $arParams["ELEMENT_SORT_FIELD"] = "catalog_PRICE_2"; } if ($_GET["order"] == "vozvr") $arParams["ELEMENT_SORT_ORDER"]= "asc"; if ($_GET["order"] == "ubiv") $arParams["ELEMENT_SORT_ORDER"]= "desc"; ?> <div class="sort"> Сортировать по цене: <a href="?sort=price&order=ubiv">по убыв.</a> | <a href="?sort=price&order=vozvr">по возвр.</a></div>