Генерируем HTML-структуру...
Качественная, кроссбраузерная верстка
Адаптивность, валидность, высокая скорость загрузки сайта
Интеграция верстки с CMS
1С-Битрикс, Joomla, Wordpress и многими другими.
Серверное и клиентское программирование
PHP, Javascript(Jquery, Angular.js). От js-анимаций до REST-систем.
Сайт под ключ
От сайтов-визиток и лендингов до корпоративных порталов и интернет-магазинов на 1С-Битрикс
Оптимизация и доработка существующих сайтов
Увеличение скорости загрузки, стабильности работы, исправление ошибок. Удаление вирусов и повышение безопасности сайта.

Последний раз о произвольной сортировке в Битриксе

Это задача, которая возникает не часто, как правило при доработке существующих сайтов. Когда в ТЗ встречается пункт «сделать сортировку по следующим параметрам:…» - понимаешь, что вроде бы решение типовое, и делал такое уже много раз, но почему-то каждый раз приходится заново вспоминать, как это делается, анализировать структуру каталога, проверять нужные свойства на доступность… В общем, пора поставить точку в этом вопросе.

Как правило, мы имеем дело с комплексным компонентом каталога. Заходим в шаблон, находим там section.php – на этой странице и будем работать. Если же используется простой компонент «элементы раздела» - тогда ищем страницу, на которой расположен код компонента. В сам компонент мы заглядывать не будем – будем работать только с его параметрами.

А в параметрах компонента нас ждут следующие чудесные строки (для комплексного каталога):

"ELEMENT_SORT_FIELD" => $arParams["ELEMENT_SORT_FIELD"],
"ELEMENT_SORT_ORDER" => $arParams["ELEMENT_SORT_ORDER"],

Это параметр для сортировки, и для ее направления. ELEMENT_SORT_ORDER может равняться «asc» - сортировка по возрастанию, и «desc» - сортировка по убыванию. Это достаточно простой аспект. А вот то, по чему мы сортируем список товаров – уже интереснее.

Сортировка по цене:

$arParams["ELEMENT_SORT_FIELD"] = "catalog_PRICE_1";

Сортировка по популярности:

$arParams["ELEMENT_SORT_FIELD"] = "SHOW_COUNTER";

Сортировка по свойству:

$arParams["ELEMENT_SORT_FIELD"] = "PROPERTY_ХХХ";
где ХХХ – ID свойства.

Задача сводится к тому, чтобы задать для сортировки два параметра – sort field и order. Задать из можно по вашему усмотрению, например через проверку GET-параметров, а в начале страницы разместить ссылки с этими GET-параметрами. Или через POST и отправку формы. Или через AJAX… В общем, как вам больше нравится.

А что, если клиент просит вас сделать еще и второстепенную сортировку? Например, главная сортировка по параметру и дополнительная – по имени (в прямом или обратном алфавитном порядке). Тогда приходят на помощь две дополнительные строки, крайне похожие на первые:

"ELEMENT_SORT_FIELD2" => $arParams["ELEMENT_SORT_FIELD2"],
"ELEMENT_SORT_ORDER2" => $arParams["ELEMENT_SORT_ORDER2"],

Их чаще всего нет в списке параметров компонента, но если их добавить – они обработаются корректно. Принцип работы тот же – в sort field 2 и order 2 подставляем нужные нам значения.

Бывает ли ELEMENT_SORT_FIELD3 и ELEMENT_SORT_ORDER3, 4, 5 и т.д. – не проверял. Да и задач таких не возникало, двух сортировок обычно хватает за глаза в любом каталоге.

1C-Битрикс, 1 Октября 2015

Комментарии

Комментариев для это записи пока нет.
Оставьте комментарий и будьте первым!

Добавить комментарий

CAPTCHA
← Вернуться к блогу
Ознакомьтесь с моим резюме

Обратная связь

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