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

Сегодня хочу рассказать, как  реализовать блок сортировки товаров как на рис. 1  в шаблоне компонента bitrix: catalog. Я покажу, как отсортировать по цене и свойству «Бренд»(строкового типа).

sortirovka

рис. 1

Заходим в раздел каталога с публичной части сайта: Каталог –Редактировать шаблон компонента (рис. 2)

 

rewrite_catalog

рис. 2

Откроется файл section.php шаблона комплексного каталога.

Выделите блок под сортировку (он должен выводиться раньше подключения компонента bitrix:catalog.section)и добавляем следующий код:


<?

printf('<span>Сортировать по: </span>
<a href="%s" class="'.$price.'">цене</a> |
<a href="%s" class="'.$brend.'">бренду</a>',
$APPLICATION->GetCurPageParam("sort=price",array("sort"), false),
$APPLICATION->GetCurPageParam("sort=Brend",array("sort"), false)
);

?>

Теперь по порядку:

  • Переменные, подставляемые в классы тегов а, нужны будут для выделения, чтобы мы знали, по какому свойству отсортированы товары сейчас. На рис. 1 выше это «по популярности».
  • Функция $APPLICATION->GetCurPageParam()Возвращает путь к текущей странице относительно корня c добавленными новыми и(или) удаленными текущими параметрами. Может принимать 3 аргумента. Рассмотрим на примере:

$APPLICATION->GetCurPageParam(«sort=Brend»,array(«sort»), false)

1-ый параметр: к текущему пути добавится «sort=Brend» ;

2-ой параметр: из текущего пути удалится параметр «sort» т.е. , если товары уже были отсортированы, то предыдущая сортировка удаляется;

3-ий параметр:  false, значит из возвращаемого url страницы будет удалено index.php;

Html код с php вставками блока сортировки добавили. Теперь  до этого кода нужно добавить php код:


<?
if ($_GET&#91;"sort"&#93; == "price")
{
$arParams&#91;"TOP_ELEMENT_SORT_FIELD"&#93; = "property_PRICE_1";
$price="asortvibor";
$brend="";
}
if ($_GET&#91;"sort"&#93; == "Brend")
{
$arParams&#91;"TOP_ELEMENT_SORT_FIELD"&#93; = "property_Brendy";
$brend="asortvibor";
$price="";
}
?>

Разберем основные моменты:

  • $arParams[«TOP_ELEMENT_SORT_FIELD»] = «catalog_PRICE_1» ;

Здесь вместо «1» должен стоять id типа цен. У меня ID базового типа цен = «1»

  • $arParams[«TOP_ELEMENT_SORT_FIELD»] = «property_Brend»;

Здесь вместо «Brend» должен стоять символьный код свойства, если оно строкового типа. В моём случае символьный код свойства Бренд — «Brend» .

Всё, редактирование файла  на этом закончено. В результате добавленных строк значение переменной $arParams[«TOP_ELEMENT_SORT_FIELD»] передастся на вход компоненту bitrix:catalog.section и в результате вы увидите товары в разделе отсортированы по свойству нужному вам .

По аналогии можно добавить сортировку по убыванию и выводимое кол-во товаров на странице.

Спасибо за внимание!

ПоделитьсяShare on Facebook1Share on VKShare on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0

7 комментариев

  • Лекс:

    если всё равно не понятно, почитайте тут. Курс Разработчик Bitrix Framework Рассказывается о Сортировка в компонентах news.list и catalog.section .

  • Алекс:

    Спасибо за заметку. Помогло сделать задачу быстрее :)

  • Expo:

    А как вывести сортировку по выводимому кол-ве товаров на странице?

  • weba:

    куда вставить ?????

    < ?printf('Сортировать по:
    цене |
    бренду‘,
    $APPLICATION->GetCurPageParam(«sort=price»,array(«sort»), false),
    $APPLICATION->GetCurPageParam(«sort=Brend»,array(«sort»), false)
    );

    ?>

    вставил в bitrix:catalog.section

  • Юра:

    Спасибо! Работает :)

  • Codeblog:

    Чтобы не писать сортировку каждый раз вручную, сделал бесплатное решение для вывода панели сортировки по стандартным полям таким как активность, популярность, название, , вес сортировки итд, по свойствам инфоблока, а так же по цене.
    Можете установить через маркетплейс:
    https://marketplace.1c-bitrix.ru/solutions/codeblogpro.sortpanel/?sphrase_id=54141815

    В описании модуля на маркетплейсе есть видео с примером установки модуля и добавлением компонента sort.panel на страницу сайта.

    P.S. решение так же предоставляет возможность сохранять выбранные параметры сортировки в сессии , чтобы выбранная сортировка сохранялась при переходе от раздела к разделу ( но это функция опциональная. Её можно выключить в настройках компонента).

    С уважением.

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