Доброго времени суток. Необходимо исключить детальное описание товара из поиска на сайте. Всё бы хорошо, но я не могу понять, почему как-то странно работает код. На просторах интернета я нашёл код, который размещаешь в 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"] = "";
}
}
return $arFields;
}
}
Разные варианты пробовал перебирать BODY, DETAIL_TEXT, PREVIEW_TEXT, не понимаю как он работает и работает ли вообще.
Находил уже похожую тему на форуме, вот она как исключить поле из поиска. По итогу которого разработали "рабочий вариант", который не работает, вот он:
Событие из первого сообщения называется "beforeIndex" и вызывается оно перед индексацией элемента, соответственно событие запускалось только для новых элементов.