Найти в Дзене
Программист - турист

Битрикс отключить поиск по анонсу и описанию

Многие из вас сталкивались с проблемой, когда в поиске появляются товары, которые не должны были появиться, Например, вводим "аро" и нам выдает позиции а-ля "мыло Dove" и т.д. Не сразу понятно, где в мыло dove встречается "аро", но после изучения товара вы находите описание товара "...аромат мыла не ос...". Я думаю такой функционал поиска битрикс введет в заблуждение пользователей. Поэтому читай ниже :)

Решение

Необходимо зайти в файл init.php. Для тех кто не знает, он должен находиться по следующему пути "/local/php_interface/init.php" (создаем, если его нет).

Добавляем следующий обработчик в код:

AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields) {
    $arIblock = array(1);
    $arDelFields = array("DETAIL_TEXT", "PREVIEW_TEXT") ;
    if (CModule::IncludeModule('iblock') && $arFields["MODULE_ID"] == 'iblock' && in_array($arFields["PARAM2"], $
arIblock) && intval($arFields["ITEM_ID"]) > 0){
    $dbElement = CIblockElement::GetByID($arFields["ITEM_ID"]) ;
    if ($arElement = $dbElement->Fetch()){
        foreach ($arDelFields as $value){
        if (isset ($arElement[$value]) && strlen($arElement[$value]) > 0){
            $arFields["BODY"] = str_replace (CSearch::KillTags($arElement[$value]) , "", CSearch::KillTags($arFields["BODY"]) );
            }
        }
    }
    return $arFields;
    }
}

Где $arIblock содержит id блока, к которому применяется данный код.
А $
arDelFields массив свойств

После этого запускаем переиндексацию поиска. В админке путь "Настройки > Поиск > Переиндексация", обязательно снимаем галочку с "Переиндексировать только измененные"