Есть событие поиска по артикулу:
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
if(!CModule::IncludeModule("iblock")){
return $arFields;
}
if($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 99){ // ID инфоблока
$db_props = CIBlockElement::GetProperty( // Запросим свойства индексируемого элемента
$arFields["PARAM2"], // BLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "desc"), // Сортировка (можно упустить)
Array("CODE"=>"CML2_ARTICLE")); // CODE свойства (в данном случае артикул)
if($ar_props = $db_props->Fetch()){
$arFields["TITLE"] = $ar_props["VALUE"] . " " . $arFields["TITLE"];
}
$arFields["BODY"] = "";
}
return $arFields;
}
По артикулу ищет если этот артикул состоит только из цифр и букв, а если артикул например KLC-100, то так не найдёт, найдет если указать KLC100, хотя на самом деле артикул KLC-100.