Сортировать товары по названию, цене и дате поступления в каталоге Битрикс

12311  |  16

Достаточно часто заказчик просит вывести сортировку по цене, новым поступлениям и названию в каталоге товаров работающего на Битрикс. Сделать это достаточно просто, тем более можно подсмотреть в пример реализации в типовом интернет магазине, что идет в комплекте со старшими редакциями системы управления.

Но можно воспользоваться вот таким способом:

В section.php добавляем:

<?if ($_GET["sort"] == "name" ||
$_GET["sort"] == "catalog_PRICE_3" ||
$_GET["sort"] == "property_PRODUCT_TYPE" ||
$_GET["sort"] == "timestamp_x"){
$arParams["ELEMENT_SORT_FIELD"] = $_GET["sort"];
$arParams["ELEMENT_SORT_ORDER"] = $_GET["method"];
}else{}?>

В template.php:

<p>Сортировать по:

<a <?if ($_GET["sort"] == "name"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=name&method=asc">
Названию
</a>

<a <?if ($_GET["sort"] == "catalog_PRICE_3"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=catalog_PRICE_3&method=asc">
Цене
</a>

<a <?if ($_GET["sort"] == "timestamp_x"):?> class="actived" <?endif;?> href="<?=$arResult["SECTION_PAGE_URL"]?>?sort=timestamp_x&method=desc">
Новые поступления
</a>

</p>

Пример работы:

Сортировка в каталоге битрикс

Расскажи друзьям-то:
Уважаемый читатель! В связи с участившимся спамом в комментариях, возможность писать доступна только для зарегистрированных пользователей
Зарегистрироваться Войти Напомнить пароль
Или войти через социальную сеть:
Анна
Здравствуйте!
А если мне нужно фильтр и сортировку вывести после описания раздела, то придется в шаблон (в файл template.php) catalog.section нужно перенести код шаблона template.php компонента catalog.smart.filter ? А то я ничего умнее не придумала.
Спасибо.
Михаил Базаров
Цитата
Анна пишет:
Здравствуйте!
А если мне нужно фильтр и сортировку вывести после описания раздела, то придется в шаблон (в файл template.php) catalog.section нужно перенести код шаблона template.php компонента catalog.smart.filter ? А то я ничего умнее не придумала.
Спасибо.
Если я првильно понял суть задачки- то лучше было вставить вызов фильтра в section.php (лежит в корне шаблона комплексного компанента "каталог"

Хотя конечно без особой разницы, просто немного не по "фен шую", если кто-то после Вас, однажды будет дорабатывать или переделывать- немножко поматериться. Вообще часто сталкиваюсь с доработками сайтов- после вот такого "а работает и фиг с ним )" - немного дороже беру, за трату времени на понимание, но чаще проще переделать чем понять.
Гость сайта
Цитата
Михаил Базаров пишет:
Цитата
Анна пишет:
Здравствуйте!
А если мне нужно фильтр и сортировку вывести после описания раздела, то придется в шаблон (в файл template.php) catalog.section нужно перенести код шаблона template.php компонента catalog.smart.filter ? А то я ничего умнее не придумала.
Спасибо.
Если я првильно понял суть задачки- то лучше было вставить вызов фильтра в section.php (лежит в корне шаблона комплексного компанента "каталог"

Хотя конечно без особой разницы, просто немного не по "фен шую", если кто-то после Вас, однажды будет дорабатывать или переделывать- немножко поматериться. Вообще часто сталкиваюсь с доработками сайтов- после вот такого "а работает и фиг с ним )" - немного дороже беру, за трату времени на понимание, но чаще проще переделать чем понять.
Вызываю я его по фен шую, в section.php
А вот выводить хочу после названия и описания подкаталога.

Т.е. так:

----------------------------------------------------
Юбки (заголовок)
Наши юбки бла бла бла...(описание)

фильтр и сортировка

элементы каталога.
----------------------------------------------------

Если вызываю фильтр в section.php, и его шаблон храню, как положено в мой_шаблонcomponents/bitrix/catalog.smart.filter/visual_horiz/template.php

То фильтр выводится на сайте над название и описанием.
Может я не там вывожу название и описание подкаталога?
я вывожу его в catalog.section/.default/template.php
Игорь
День добрый
а если надо сортировать по какому то свойству?
Гость сайта
Цитата
Игорь пишет:
День добрый
а если надо сортировать по какому то свойству?
$_GET["sort"] == "property_PRODUCT_TYPE" - где PRODUCT_TYPE имя свойства
Гость сайта
Добрый день, а как вывести сортировку, если мы находимся на странице выдачи результатов поиска и компонент каталога комплексный? Ведь при таком вызове мы потеряем параметры в GET типа &how=r&q=строка_запроса
Андрей
Здравствуйте!
Спасибо за вариант.
Одно но: Ваша сортировка работает только в один конец, т.е. asc или desc.
Не подскажете, как сделать на одной кнопке по цене, чтобы она меняла направление после каждого нажатия?
Владимир
Здравствуйте, сделал все как указанно, но у меня почему то не работает. при нажатии на сортировку, например, по цене, исчезают все товары. В чем может быть проблема подскажите пожалуйста
Михаил Базаров
Цитата
Владимир пишет:
Здравствуйте, сделал все как указанно, но у меня почему то не работает. при нажатии на сортировку, например, по цене, исчезают все товары. В чем может быть проблема подскажите пожалуйста
Перепроверьте все еще раз внимательно, должно работать.
Владимир
Цитата
Михаил Базаров пишет:
Цитата
Владимир пишет:
Здравствуйте, сделал все как указанно, но у меня почему то не работает. при нажатии на сортировку, например, по цене, исчезают все товары. В чем может быть проблема подскажите пожалуйста
Перепроверьте все еще раз внимательно, должно работать.
Перепроверил несколько раз, никак не могу понять в чем причина, сможете помочь? Вот участок кода который отвечает за цену и передачу товара в корзину:

[td]
<?if($arPrice = $arElement["PRICES"][$code] ;) :?>
<?if($arPrice["DISCOUNT_VALUE"] < $arPrice["VALUE"] ;) :?>
<?=$arPrice["PRINT_VALUE"]?><br /><span class="catalog-price"><?=$arPrice["PRINT_DISCOUNT_VALUE"]?></span>
<?else:?>
<span class="catalog-price"><?=$arPrice["PRINT_VALUE"]?></span>
<?endif?>
<?else:?>
 
<?endif;?>
<?endforeach;?>
<?if(count($arResult["PRICES"] ;) > 0):?>
<?if($arElement["CAN_BUY"] ;) :?>
"title="купить">

 
<?elseif((count($arResult["PRICES"] ;) > 0) || is_array($arElement["PRICE_MATRIX"] ;) ):?>
<?=GetMessage("CATALOG_NOT_AVAILABLE" ;) ?>
<?endif?> 
[/td]
<?endif;?>
[/tr]
Guest
Как я понимаю о кэше можно забыть с таки вариантом?
Михаил Базаров
Цитата
Guest пишет:
Как я понимаю о кэше можно забыть с таки вариантом?
записка достаточно древняя. Глянте в новом типовом решении магазин, что ставится с битрикс- там это уже реализовно с кешем :)
George
Подскажите пожалуйста как сделать сортировку по полю количество товаров?
Guest
Подскажите пожалуйста, почему при нажатии на ссылку для сортировки переводит на главную страницу?
Михаил Базаров
Цитата
Guest пишет:
Подскажите пожалуйста, почему при нажатии на ссылку для сортировки переводит на главную страницу?
Видимо в начале ссылки на сортировку оставили "/" - уберите его
Евгений Евгений
Возник вопрос а как сделать сортировку в news.list
пытался так
В /bitrix/news/novnov/section.php
Код
<?
$arParams["SORT_BY1"] = !empty(trim($arParams["SORT_BY1"]))? trim($arParams["SORT_BY1"]) : "NAME";$arParams["SORT_ORDER1"] = !empty(trim($arParams["SORT_ORDER1"]))? trim($arParams["SORT_ORDER1"]) : "ASC";   

?>

а в /news/novnov/bitrix/news.list/template.php
Код
<p class="sort">Сортировка:

    <a <?if ($_GET["sort"] == "NAME"):?> class="active" <?endif;?>       href="/novosti/?sort=NAME&method=asc">название</a>       
 
      
</p>
Не работает

© 2011—2016 Частный вебмастер: ИП Базаров, ОГРНИП: 315784700173692. Работает на 1С-Битрикс.
Копирование материалов запрещено: "ГК РФ, часть 4, раздел VII: Права на результаты интеллектуальной деятельности".

Информация размещенная на сайте, не является публичной офертой. Политика конфеденциальности
x
Как к Вам обращаться? *
Ваша электронная почта: *
Доп. материалы (логотип, тех. задание):
 
Обзор
Текст сообщения: