Долго искал способ решения, в итоге нашел его.
Я перед обновлением индекса просто выкидываю не нужный текст из него.
Цитата |
---|
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler" ;) ;
function BeforeIndexHandler($arFields) { $arrIblock = array(6); //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; } }
|