Добавления поиска по значению свойства в компонент “search.title” в 1с-Битрикс


1) Для добавления в поисковый индекс компонента “Поиск по заголовкам” (search.title) также значение свойства элемента (чтобы поиск был не только по названию элемента, но и по какому-либо из его свойств) необходимо добавить код в файл init.php:

AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler"); 
function BeforeIndexHandler($arFields){ 
    if(!CModule::IncludeModule("iblock")) return $arFields; 
    if($arFields["MODULE_ID"] == "iblock") { 
        $db_props = CIBlockElement::GetProperty( 
        $arFields["PARAM2"], 
        $arFields["ITEM_ID"], 
        array("sort" => "asc"), 
        Array("ID" =>[999])); // 999 - id свойства, которое нужно добавить в индекс 
        while($ar_props = $db_props->Fetch()){ 
            $arFields["TITLE"] = $ar_props["VALUE"] . " " . $arFields["TITLE"]; 
        } 
    } 
    return $arFields; 
}

2) В component.php компонента “search.title” заменить строку кода:

$arResult["alt_query"]? $arResult["alt_query"]: $arResult["query"] 

на:

preg_replace('/(\S+)/', '"\\1"', $arResult["query"])

Проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687).