Блог

Удаление свойства элемента из поискового индекса с помощью события BeforeIndex

<?
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler"); 

function BeforeIndexHandler($arFields) {
	$arrIblock = array(2); //ID инфоблоков, для которых производить модификацию 
	$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; 
	}
}
?>

Этот код сработает либо при полной переиндексации сайта либо при сохранении элемента инфоблока.

Комментарии (2)

  • Доброжелатель

    Отличный способ, большое спасибо!

    29 ноября, 2016 в 15:06
    • Oleksandr Kostiuk

      Мы рады, что наши наработки пригодились кому-то ещё.

      27 апреля, 2017 в 10:44
  • Александр

    Доброго дня! А не подскажете, как исключить из поиска раздел?

    26 сентября, 2015 в 11:19

Оставить комментарий



Вам нужен сайт? С чего начать?

Проконсультируем, найдем оптимальное решение, подготовим индивидуальное предложение.