Сортировка по цене и названию в Битрикс
Старая проблема, которую Битрикс так и не намеревается решать удобным для пользователей способом - сортировки по цене и названию. Данный тип сортировки особенно популярен у посетителей, привыкших к функционалу 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>
Комментарии: