Skip to content

Instantly share code, notes, and snippets.

@Isa3v
Last active February 24, 2023 10:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save Isa3v/03ce7ceba1240709b06fb20d730ceb80 to your computer and use it in GitHub Desktop.
Save Isa3v/03ce7ceba1240709b06fb20d730ceb80 to your computer and use it in GitHub Desktop.
Настройка сортировки Bitrix в компонентах

Bitrix сортировка

  • Подключаем перед catalog.section, news.list
  • Заменяем $arParams["ELEMENT_SORT_FIELD"] и $arParams["ELEMENT_SORT_ORDER"] на $_SESSION["ELEMENT_SORT_FIELD"] и $_SESSION["ELEMENT_SORT_ORDER"]
<?
// Старт сессии
session_start();
// Параметры сортировки
$arSorts = [
'default' => [
'NAME' => 'По умолчанию',
'PARAM' => $arParams['ELEMENT_SORT_FIELD'],
'ORDER' => $arParams['ELEMENT_SORT_FIELD2']
],
'popularity' => [
'NAME' => 'По популярности',
'PARAM' => 'shows',
'ORDER' => 'desc'
],
'raise' => [
'NAME' => 'По возрастанию цены',
'PARAM' => 'PROPERTY_PRICE',
'ORDER' => 'asc'
],
'lower' => [
'NAME' => 'По убыванию цены',
'PARAM' => 'PROPERTY_PRICE',
'ORDER' => 'desc'
],
'new' => [
'NAME' => 'Новинки',
'PARAM' => 'timestamp_x',
'ORDER' => 'asc'
],
'special' => [
'NAME' => 'Специальная цена',
'PARAM' => 'PROPERTY_SPECIAL',
'ORDER' => 'desc'
]
];
// get запросы
$request = \Bitrix\Main\Application::getInstance()->getContext()->getRequest();
$sortQuery = $request->getQuery('sort');
// Разбираем get запросы
if (!empty($sortQuery)){
if(isset($arSorts[$sortQuery])){
$sortParam = $arSorts[$sortQuery]['PARAM'];
$sortOrder = $arSorts[$sortQuery]['ORDER'];
}
$_SESSION["ELEMENT_SORT_FIELD"] = $sortParam;
$_SESSION["ELEMENT_SORT_ORDER"] = $sortOrder;
}
// Если не пришло параметров и нет в сесиии, то ставим дефолтные настройки
if(empty($_SESSION["ELEMENT_SORT_FIELD"])){
$_SESSION["ELEMENT_SORT_FIELD"] = $arParams["ELEMENT_SORT_FIELD"];
$_SESSION["ELEMENT_SORT_ORDER"] = $arParams["ELEMENT_SORT_ORDER"];
}
// Разбираем массив, ставим активный и получаем название
foreach($arSorts as $link => $value){
if($value['PARAM'] == $_SESSION["ELEMENT_SORT_FIELD"] && $value['ORDER'] == $_SESSION["ELEMENT_SORT_ORDER"]){
$arSorts[$link]['SELECTED'] = true;
$activeParam = $arSorts[$link]['NAME'];
}
}
// .start template sort
$sortOutput .= '<span>'.$activeParam.'</span>';
// Параметры
$sortOutput .= '<ul>';
foreach($arSorts as $link => $value){
$sortOutput .= '<li '.($value['SELECTED'] ? 'class="selected"' : '').'>';
$sortOutput .= '<a href="'.$link.'">'.$value['NAME'].'</a>';
$sortOutput .= '</li>';
}
$sortOutput .= '</ul>';
$sortOutput .= '</div>';
// .end template sort
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment