- Подключаем перед catalog.section, news.list
- Заменяем
$arParams["ELEMENT_SORT_FIELD"]
и$arParams["ELEMENT_SORT_ORDER"]
на$_SESSION["ELEMENT_SORT_FIELD"]
и$_SESSION["ELEMENT_SORT_ORDER"]
Last active
February 24, 2023 10:18
-
-
Save Isa3v/03ce7ceba1240709b06fb20d730ceb80 to your computer and use it in GitHub Desktop.
Настройка сортировки Bitrix в компонентах
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
// Старт сессии | |
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