Как добавить свойство в Ajax поиск по заголовкам в Битриксе
Часто возникает задача, когда необходимо в Ajax поиск по сайту на Битриксе добавить то или иное свойство. К сожалению настройками это сделать нельзя, т.к. словарь поиска формируется при переиндексации, поэтому придется немного доработать само формирование индекса.
В этом нам поможет событие BeforeIndex модуля search.
Алгоритм решения задачи несложный:
- Размещаем обработчик события в файле init.php
- Получаем значение свойства для индексируемого элемента
- Дописываем его в строку индексации
Пример кода обработки с комментариями
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
// создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields)
{
if(!CModule::IncludeModule("iblock")) // подключаем модуль
return $arFields;
if($arFields["MODULE_ID"] == "iblock")
{
$db_props = CIBlockElement::GetProperty( // Запросим свойства индексируемого элемента
$arFields["PARAM2"], // IBLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "asc"), // Сортировка (можно упустить)
Array("CODE"=>"VENDOR_CODE")); // CODE свойства (в данном случае артикул)
if($ar_props = $db_props->Fetch())
$arFields["TITLE"] .= " ".$ar_props["VALUE"]; // Добавим свойство в конец заголовка индексируемого элемента
}
return $arFields; // вернём изменения
}
