Задать вопрос
glem1337
@glem1337

Как реализовать уникальный индекс сортировки товара в разделе?

Доброго времени суток!

Клиенту нужно управлять сортировкой каждого товара во всех разделах сайта. Управление должно быть на уровне раздела. То есть, если значение сортировки для конкретного раздела заполнено, то используем его, иначе используем стандартный индекс сортировки.

Пока что на ум приходит только создание пользовательского поля, которое будет выводить все товары принадлежащие к разделу и доп. поле ввода для индекса напротив названия товара.

Вопросы:
  1. Оптимально ли решать это пользовательским полем?
  2. Вопрос вытекает из первого. Был ли у вас опыт подобной задачи и как вы её решали?
  • Вопрос задан
  • 407 просмотров
Подписаться 1 Простой 5 комментариев
Ответ пользователя Антон К ответам на вопрос (2)
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Добавим к стандартным полям сортировки, в нашем случае "кол-во просмотров, т.е. популярность - shows", свои сортировки, созданные на свойствах элемента - PRIORITET - если хотим поднять элемент выше в списке и NOSKLAD - если хотим убрать товары, отсутствующие на складе - ниже. Отображать не будем, но будем учитывать:
$arSort = array("PROPERTY_NOSKLAD"=>"ASC", "PROPERTY_PRIORITET"=>"DESC", "shows"=>"DESC");
if (
    isset($_GET["sort"]) && isset($_GET["method"]) && (
            $_GET["sort"] == "name" ||
            $_GET["sort"] == "catalog_PRICE_1" ||
            $_GET["sort"] == "shows" ||
            $_GET["sort"] == "created")){
$arSort = array($_GET["sort"]=>$_GET["method"]);
  }

В итоге в компонент или используя api, можно передавать массив, описывающий направления и параметры сортировки .
$res = CIBlockElement::GetList($arSort, Array($arrFilter, $arFilter), false, Array("bShowAll"=>false, "nPageSize"=>18, "iNumPage"=>$pn), $arSelect);
Ответ написан