Решение, как настроить в Битриксе поиск по каталогу, что бы не искал в описаниях, а только по названию товара и/или по артикулу
Решение:
- Добавить этот код в 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)