Найти в Дзене
bxstudio.ru

Как отключить поиск по описаниям товаров в Битрикс?

Отключить поиск по описаниям товаров в Битрикс 1C-Bitrix. Отключаем поиск по описаниям товаров   Отключение товаров может потребоваться, если у вас очень большой каталог товаров, у каждого товара заполнено детальное описание, с большими объемами текста. При попытке поиска по каталогу, стандартным компонентом "Поиск по каталогу", есть вероятность, что начнут выдаваться не релевантные запросу результаты. Добавить обработчик BeforeIndex Находим файл init.php, в котором и описываем функцию-обработчик. Данная функция сработает при попытке переиндексации элементов модулем поиска и исключит описания анонсов и детальные описания из индекса. AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
$arrIblock = array(48);
$arDelFields = array(
"DETAIL_TEXT",
"PREVIEW_TEXT"
);
if (
CModule::IncludeModule('iblock')
&& $arFields["MODULE_ID"] == 'iblock'
&& in_array($arFields["PARAM2"], $arrIblock
Оглавление

Отключить поиск по описаниям товаров в Битрикс

1C-Bitrix. Отключаем поиск по описаниям товаров  

Отключение товаров может потребоваться, если у вас очень большой каталог товаров, у каждого товара заполнено детальное описание, с большими объемами текста. При попытке поиска по каталогу, стандартным компонентом "Поиск по каталогу", есть вероятность, что начнут выдаваться не релевантные запросу результаты.

Добавить обработчик BeforeIndex

Находим файл init.php, в котором и описываем функцию-обработчик. Данная функция сработает при попытке переиндексации элементов модулем поиска и исключит описания анонсов и детальные описания из индекса.

AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
$arrIblock = array(48);
$arDelFields = array(
"DETAIL_TEXT",
"PREVIEW_TEXT"
);
if (
CModule::IncludeModule('iblock')
&& $arFields["MODULE_ID"] == 'iblock'
&& in_array($arFields["PARAM2"], $arrIblock)
&& 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;
}
}

Где:
$arrIblock = array(48); - id инфоблока каталога
$arDelFields = array("DETAIL_TEXT", "PREVIEW_TEXT") ; - поля которые необходимо исключить