Идеи пользователя 35986

Рейтинг: 6  
Внедрено
Предложил Пользователь 35986 02.10.2018 14:03:58

GetList: Сортировка по порядку ID в переданном массиве

На входе есть массив с ID элементов. Они находятся в массиве в том порядке, в котором нужно организовать вывод (например, получены из компонента поиска с сортировкой по релевантности)

$arItemsID = [/* массив ID элементов в нужном порядке */];
$ob = \CIblockElement::GetList(
    [
        'ID' => 'LIST', // новый тип сортировки
    ],
    ['ID' => $arItemsID]
);
while ($arItem = $ob->Fetch()) {
    // элементы выводятся в порядке попадания в массив $arItemsID 
}

Для этого нужно в функцию \CIblockElement::PrepareGetList() добавить такой код
if (count($arOrder) == 1 && $arOrder['ID'] == 'LIST' && array_key_exists('ID', $arFilter)) {
    $arSqlOrder['ID'] = 'FIELD(BE.ID, \''.implode('\',\'', $arFilter['ID']).'\')';
}
Рейтинг: 1  
Ответил Жуков Евгений 23.07.2019 11:18:16
Выйдет в iblock 18.6.700. Пример использования:
$items = [100, 41, 12, 5, 71];
$order = ['ID' => $items];
$filter = ['ID' => $items];
$iterator = \CIBlockElement::GetList($order, $filter, ...
Рейтинг: 2.5915  
На голосовании
Предложил Пользователь 35986 17.04.2014 14:56:17

добавить событие OnBeforeCatalogImport1C

В механизм импорта товаров из 1С на сайт добавить событие OnBeforeCatalogImport1C.
Место срабатывания - при отправке запроса init.
Рейтинг: 10.4143  
На голосовании
Предложил Пользователь 35986 21.01.2014 11:43:12

Выводить оповещение об ответах в тикетах техподдержки в быстрых оповещениях

Идея в том, чтобы новые непросмотенные ответы на тикеты в техподдержке выводить в быстрых оповещениях.

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