Добавление поиска по свойству в компоненте bitrix:search.title
Чтобы поиск начал искать по значению свойства элемента инфоблока, нужно добавить его к поисковой строке на этапе индексации.
Сделать это можно с помощью события BeforeIndex, которое вызывается перед индексацией каждого элемента.
Добавляем обработчик в /local/php_interface/init.php:
<?php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('search', 'BeforeIndex', 'beforeIndexHandler');
function beforeIndexHandler($arFields) {
if (!CModule::IncludeModule('iblock')) return $arFields;
if ($arFields['MODULE_ID'] == 'iblock') {
$propertyRes = CIBlockElement::GetProperty(
$arFields['PARAM2'],
$arFields['ITEM_ID'],
[],
['CODE' => 'PROP_CODE'], // PROP_CODE – код свойства типа "Строка"
);
if ($item = $propertyRes->Fetch()) {
$arFields['TITLE'] .= ' ' . $item['VALUE'];
}
}
return $arFields;
}
Само собой, вы можете таким образом добавить и несколько свойств к индексации.
Не забудьте переиндексировать поиск: заходим в админке в раздел Настройки → Поиск → Переиндексация поиска (/bitrix/admin/search_reindex.php), снимаем галочку «Переиндексировать только измененные» и нажимаем «Переиндексировать».
Если у вас много элементов, то переиндексация может занять много времени.
Проверяем, как отрабатывает поиск, теперь он должен будет искать по значениям указанных свойств.
Оставьте комментарий
Если эта статья была полезной для вас, оставьте комментарий ниже или задайте интересующий Вас вопрос. Ваш опыт может помочь другим читателям!
Написать комментарий