Битрикс поиск товара по ID

Если вы не читали статью Как сделать поиск по ID, советую для ознакомления. А сегодня продолжаем разбираться как решить данную задачу.

Поиск товаров по ID в битриксе

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

Автоматом поле не попадет куда нам надо, поэтому надо заполнить поле для поиска по ID у уже созданных товаров, и автоматизировать его заполнение у новых.

Шаг 2. Пишем код и запускаем:

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
 
CModule::IncludeModule("iblock");
 
// Введите ID вашего инфоблока каталога
$IBLOCK_ID = 5;
// Символьный код вашего поля для поиска по ID
$SEARCH_FIELD_NAME = 'SEARCH_ID';
$els = CIBlockElement::GetList(
    array("SORT"=>"ASC"),
    array("IBLOCK_ID" => $IBLOCK_ID, "ACTIVE" => "Y"),
    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) {
        echo $cnt.' - добавлен'."<br>";
    }
}
 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Можно убрать подключение header и footer и просто вначале добавить:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>

Шаг 3. Обновляем файл /bitrix/php_interface/init.php:

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

Не забывайте сделать полную переиндексацию в настройках продукта. И хотя данный метод слегка устарел, всё равно считаю, что про него необходимо рассказать.

На вашем сайте нужно выполнить данную работу? Вы можете обратиться ко мне за помощью и сэкономить своё время

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *