Поиск в публичной части сайта под управлением Битрикс не заложен в самой CMS. Поэтому, если клиент очень хочет получить такой поиск, то нужно немного покодить.
Для начала проведем подготовительные работы. Надо создать в инфоблоке нужного каталога пользовательское свойство, в котором мы будем хранить дубль ID товара.
[spoiler] Назовем это поле, например, SEARCH_ID. Теперь в настройках поля отмечаем, что оно участвует в поиске и сохраняем изменения.
Подготовка закончена, теперь надо заполнить поле для поиска по ID у уже созданных товаров, и автоматизировать его заполнение у вновь создаваемых.
Чтобы заполнить это поле для ваших тысяч товаров сохраните код ниже в файл, поменяйте в нем номер инфоблока и код поля для поиска по ID на ваши, загрузите файл на ваш сайт и откройте в браузере.
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); set_time_limit(0); //убираем ограничение на время выполнения скрипта CModule::IncludeModule("iblock"); CModule::IncludeModule("sale"); CModule::IncludeModule("catalog"); //введите сюда 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"); ?> |
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "searchid"; function searchid(&$arFields){ if($arFields["ID"]>0){ $upd = CIBlockElement::SetPropertyValuesEx( $arFields["ID"], $arFields['IBLOCK_ID'], array('SEARCH_ID' => $arFields["ID"]) ); } } |