Поиск в публичной части сайта под управлением Битрикс не заложен в самой 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"])
);
}
}
|