Решение, как настроить в Битриксе поиск по каталогу, что бы не искал в описаниях, а только по названию товара и/или по артикулу

Решение:
- Добавить этот код в init.php
- Запустить полную переиндексацию поиска
// Поиск только по названию товара
AddEventHandler("search", "BeforeIndex", array("SearchHandlers", "BeforeIndexHandler"));
class SearchHandlers
{
function BeforeIndexHandler($arFields)
{
if($arFields["MODULE_ID"] == "iblock")
{
if(array_key_exists("BODY", $arFields) && substr($arFields["ITEM_ID"], 0, 1) != "S") // Только для элементов
{
$arFields["BODY"] = "";
}
if (substr($arFields["ITEM_ID"], 0, 1) == "S") // Только для разделов
{
$arFields['TITLE'] = "";
$arFields["BODY"] = "";
$arFields['TAGS'] = "";
}
}
return $arFields;
}
}Поиск только по названию товара и артикулу
// Поиск только по названию товара и артикулу
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
// создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields)
{
if(!CModule::IncludeModule("iblock")){
return $arFields;
}
if($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 17){ // ID инфоблока
$db_props = CIBlockElement::GetProperty( // Запросим свойства индексируемого элемента
$arFields["PARAM2"], // BLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "asc"), // Сортировка (можно упустить)
Array("CODE"=>"CML2_ARTICLE")); // CODE свойства (в данном случае артикул)
if($ar_props = $db_props->Fetch()){
$arFields["TITLE"] .= " ".$ar_props["VALUE"]; // Добавим свойство в конец заголовка индексируемого элемента
}
$arFields["BODY"] = "";
}
return $arFields;
}Поиск по артикулу
// Поиск по артикулу
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"], // BLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "asc"), // Сортировка (можно упустить)
Array("CODE"=>"CML2_ARTICLE")); // CODE свойства (в данном случае артикул)
if($ar_props = $db_props->Fetch())
$arFields["TITLE"] .= " ".$ar_props["VALUE"]; // Добавим свойство в конец заголовка индексируемого элемента
}
return $arFields; // вернём изменения
} Похожие решения:
Комментарии (0)