Рейтинг: 5.8313  
Внедрено
Предложил Пользователь 254385 22.12.2015 14:00:02

CIBlockElement::GetList добавить возможность сортировки по релевантности

Есть компонент catalog search, который состоит из двух компонентов:
catalog page и catalog section.
Логика у него простая, результат catalog page передаётся в catalog section, который и выводит на страницу.
catalog page может сортировать по релевантности, но проблема в том, что catalog section применяет свою сортировку, а сортировки по релевантности он не имеет из-за того, что её не поддерживает CIBlockElement::GetList.  
Рейтинг: 0.9734  
Внедрено
Предложил Пользователь 249577 01.12.2015 15:36:41

Сортировка торговых предложений по цене в каталоге

Почему нет сортировки по цене ТП в каталоге? С точки зрения маркетинга неплохо бы выводить в секции у товара цену самого его дешёвого ТП. Зайдя уже в карточку пользователь сам сможет решить какие настройки товара(ТП) ему нужны.
Рейтинг: 0  
Ответил Жуков Евгений 15.02.2018 11:45:14
catalog 17.6.0 + iblock 17.6.0
Рейтинг: 1.2013  
На голосовании
Предложил Пользователь 94272 18.04.2015 17:54:27

Добавить компоненту "Элементы раздела" внешний массив для сортировки элементов

Если коротко - двух параметров для сортировки не всегда достаточно. Еще хотелось бы управлять сортировкой через глобальный массив, подобно тому, как это происходит с FILTER_NAME.

Все что для этого нужно - добавить еще один параметр в компонент, например "SORT_NAME" и несколько строк кода, примерно так:

Рейтинг: 0.2169  
Отложено
Предложил Пользователь 94272 17.09.2014 19:07:46

Чистый шаблон catalog.section из коробки

Предлагаю специально для разработчиков включить в поставку компонента заготовку шаблона, вроде такой:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>

<?foreach($arResult["ITEMS"] as $arElement):?>
   <?$this->AddEditAction($arElement['ID'], $arElement['EDIT_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_EDIT"));
   $this->AddDeleteAction($arElement['ID'], $arElement['DELETE_LINK'], CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BCS_ELEMENT_DELETE_CONFIRM')));?>

   id="<?=$this->GetEditAreaId($arElement['ID']);?>
   
<?endforeach;?>
Рейтинг: 0  
Внедрено
Предложил Пользователь 127616 02.06.2014 10:09:09

Желательно учитывать внешний фильтр во всех выборках в catalog.section

Свойства для элементов получаем на 788 строке с помощью такого кода:
CIBlockElement::GetPropertyValuesArray($arElementLink, $arParams["IBLOCK_ID"], $arFilter);
Но при этом не учитываются внешние фильтры.
Можно сделать это также, как делается и при выборке самих элементов в этом же компоненте. Вместо $arFilter использовать array_merge($arrFilter, $arFilter);
Рейтинг: 0.5425  
Ответил Жуков Евгений 02.06.2014 13:23:53
Внешние фильтры учитываются. Более того, у Вас устаревший код компонента, эта строка была изменена в iblock 14.5.4
Рейтинг: 0  
Внедрено
Предложил Пользователь 13767 24.04.2014 03:52:32

Параметр OFFERS_FILTER_NAME в компонент catalog.section

Собственно сабж.
Сейчас выбираются все активные торговые предложения, но бывают ситуации, когда ТП обладают некоторым свойством, которое накладывает свою логику отображения. Например создание ТП с привязкой к разным городам/складам.
Рейтинг: -0.2051  
Ответил Жуков Евгений 31.08.2015 18:05:04
За это отвечает ключ OFFERS основного фильтра.
Рейтинг: 14.8606  
На голосовании
Предложил Пользователь 13767 15.07.2013 13:17:53

Поменять порядок массивов фильтрации в catalog.section

По умолчанию идет
$rsElements = CIBlockElement::GetList($arSort, array_merge($arrFilter, $arFilter), false, $arNavParams, $arSelect);


где $arrFilter - пользовательский массив фильтрации, и некоторые значения, которые идут в $arFilter, переопределяют значения в $arrFilter

$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"IBLOCK_LID" => SITE_ID,
"IBLOCK_ACTIVE" => "Y",
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
"MIN_PERMISSION" => "R",
"INCLUDE_SUBSECTIONS" => ($arParams["INCLUDE_SUBSECTIONS"] == 'N' ? 'N' : 'Y'),
;);


например  "ACTIVE_DATE" => "Y",   "ACTIVE" => "Y"
Рейтинг: 8.841  
Внедрено
Предложил Пользователь 13767 27.06.2013 11:46:07

Фильтр по складу(-ам) в компонент catalog.section

Идея, как дополнение к новому функционалу - http://dev.1c-bitrix.ru/community/blogs/product_features/sorting-of-goods.php. И соответственно при включении данного фильтра, опция “Не отображать товары, которых нет на складе” будет распространяться только на данный склад(-ы).
Рейтинг: 0  
Ответил Жуков Евгений 22.03.2019 16:37:42
Вышло в catalog 15.0.2
Рейтинг: 1.9924  
На голосовании
Предложил Пользователь 13767 01.04.2013 12:29:10

Формат массива, описывающего файловые свойства в компонентах news.list, news.detail, catalog.section, catalog.detail

Сейчас для свойства типа "Файл" в случае если у элемента добавлен один файл, структура результирующего массива - $arResult["DISPLAY_PROPERTIES"]["MORE_PHOTO"] в шаблоне следующая:

[VALUE] => Array
        (
            [0] => 958
        )

и соответствующий ему массив
[FILE_VALUE] => Array
        (
            [ID] => 958
      ...
            [SRC] => /upload/iblock/914/2.jpg
        )


в тоже время, если у элемента больше одного значения для свойства типа "Файл" - имеем следующую структуру:

[VALUE] => Array
        (
            [0] => 948
            [1] => 949
        )


и соответствующий ему массив

[FILE_VALUE] => Array
        (
            [0] => Array
                (
                    [ID] => 948
                   ...
                    [SRC] => /upload/iblock/3af/1.jpg
                )

            [1] => Array
                (
                    [ID] => 949
                   ...
                    [SRC] => /upload/iblock/e22/2.jpg
                )


Т.е. во втором массиве появляется еще один уровень вложенности, на мой взгляд, в первом варианте должно быть также.
Рейтинг: 0  
Ответил Жуков Евгений 31.10.2013 19:41:07
Невозможно из соображений совместимости
Рейтинг: 14.5144  
Внедрено
Предложил Пользователь 54897 14.02.2012 14:11:57

Либо ID/CODE раздела, либо фильтр в catalog.section

Проблема заключается в том, что компонент "bitrix:catalog.section" не реагирует на фильтр, если в параметрах не передан ID/CODE раздела инфоблока. При этом не спасает даже параметр "SHOW_ALL_WO_SECTION", установленный в значение "Y", хотя пару лет назад это решение работало.

Собственно, эта логика прослеживается в исходном коде компонента "bitrix:catalog.section", но такое поведение компонента является неоправданным и усложняет разработку проектов. Объективной необходимости проводить проверку наличия ID/CODE раздела до обработки фильтра нет: эти вещи не являются взаимоисключающими. При этом фильтр по всем элементам (без указания разделов) заказчики требуют довольно часто, и каждый раз кастомизировать компонент - не очень хороший выход.

Предлагаю либо довести компонент "bitrix:catalog.section" до ума, либо создать аналогичный компонент, не требующий жесткого указания раздела. Например, его можно назвать "Элементы инфоблока".

P.S. В поддержке проблемой это признать отказались. В принципе, их можно понять, но разработчикам от этого не легче.
Рейтинг: 0  
Ответил Жуков Евгений 01.09.2014 14:43:43
Компонент применяет фильтр, даже если раздел не найден (считается, что идет работа с корневым разделом).
Рейтинг: -11.3775  
Внедрено
Предложил Пользователь 81099 07.02.2012 11:54:32

Корректировка логики компонента bitrix:catalog.section

Сейчас в компоненте действует алгоритм исключающих условий:
  • передан ли параметр by_link,
  • указан ли код секции,
  • указан ли ID секции.
Логичнее было бы поменять местами проверку ID секции и кода секции, т.к. ID позволяет однозначно определить секцию, а символьный код - нет.
Предложенный подход не изменит логику компонента, но сделает его работу более предсказуемой.
Рейтинг: 0  
Ответил Жуков Евгений 28.02.2014 19:44:39
Вышло в обновлении iblock 12.5.5