Исключение стандартных полей из поисковой индексации Битрикс
5 октября 2020 13:28:38
7655 просмотров
По умолчанию, поиск в Битрикс осуществляется по всем текстовым полям элементов: название, текст анонса, детальное описание. Допустим, нужно, чтобы поиск работал только по названиям элементов, а текст анонса и детальное описание нужно исключить.
Для решения, переходим в файл bitrix/php_interface/init.php и вставляем следующий код:
AddEventHandler("search", "BeforeIndex", "IndexCustom"); function IndexCustom($arFields) { $iblock = array(1); // 1 - ID инфоблока $unset_fields = array("DETAIL_TEXT", "PREVIEW_TEXT"); // поля которые нужно исключить if(\Bitrix\Main\Loader::includeModule("iblock") && $arFields["MODULE_ID"] == "iblock" && in_array($arFields["PARAM2"], $iblock) && intval($arFields["ITEM_ID"]) > 0) { $db_res = CIblockElement::GetByID($arFields["ITEM_ID"]); if($res = $db_res->Fetch()) { foreach($unset_fields as $value) { if(isset($res[$value]) && strlen($res[$value]) > 0) { $arFields["BODY"] = str_replace(CSearch::KillTags($res[$value]), "", CSearch::KillTags($arFields["BODY"])); } } } return $arFields; } }Далее нужно сделать переиндексацию поиска. Заходим в Настройки, Поиск, Переиндексация, убираем галочку Переиндексировать только измененные и запускаем переиндексацию.
Материалы по теме
25 февраля 2018 19:36:22
Как получить минимальную цену торговых предложений Битрикс
У товаров в Битрикс может быть сразу несколько торговых предложений с разными ценами. И иногда требуется определить минимальную цену из всех торговых предложений.