Битрикс, поиск по ID

Дата: 18 февраля /

Битрикс по умолчанию не умеет искать по ID, однако умеет искать по пользовательским свойствам. Один из вариантов решения — создать собственное свойство в инфоблоке, куда автоматически, при создании нового элемента писать ID. Назовем это поле, например, SEARCH_ID. Теперь в настройках поля отмечаем, что оно участвует в поиске и сохраняем изменения.

001

 

Код, который автоматически будет заполнять поле SEARCH_ID при добавлении нового элемента инфоблока.

Код нужно добавить в /bitrix/php_interface/init.php

/* добавляем в поисковый индекс ID нового товара */
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "searchid");
function searchid(&$arFields){
if($arFields["ID"]>0){
$upd = CIBlockElement::SetPropertyValuesEx(
$arFields["ID"],
$arFields['IBLOCK_ID'],
array('SEARCH_ID' => $arFields["ID"])
);
}
}

 

Для того, чтобы автоматически заполнить это поле для уже существующих элементов, необходимо выполнить следующий код

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
 
set_time_limit(0); //убираем ограничение на время выполнения скрипта
 
CModule::IncludeModule("iblock");
 
//введите сюда ID вашего инфоблока каталога
$IBLOCK_ID = 5;
//а сюда символьный код вашего поля для поиска по ID 
$SEARCH_FIELD_NAME = 'SEARCH_ID';
$els = CIBlockElement::GetList(
    array("SORT"=>"ASC"),
    array("IBLOCK_ID" => $IBLOCK_ID),
    false,
    false,
    array('ID','IBLOCK_ID')
);
 
$cnt=0;
 
while ($s = $els->Fetch()) {
     
    $ok = CIBlockElement::SetPropertyValuesEx(
        $s["ID"], 
        $s['IBLOCK_ID'], 
        array('SEARCH_ID' => $s["ID"])
    );
    if ($ok) {
        $cnt++;
    }
}
echo $cnt;
 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Источник — http://coder-diary.ru/programming/bitriks-poisk-tovara-po-id/

Статьи по теме:

  1. Обработка редиректов в Битрикс
  2. Bitrix, как работать с пользовательскими полями секций?
  3. Bitrix, как передать переменную в другой компонент или отложенные функции
  4. Битрикс, как получить ID раздела или элемента инфоблока по символьному коду?
  5. Битрикс, как скопировать инфоблок?

Метки: ,

Рубрика: Bitrix

Оставить комментарий