function BeforeIndexHandler($arFields){ if($arFields["MODULE_ID"] == "iblock"){ if($arFields["PARAM2"]==4 && $arFields['SITE_ID'][1]=='s2'){ CModule::IncludeModule("search"); CModule::IncludeModule("iblock"); //AddMessage2Log($arFields); $arFields['SITE_ID']=array('s1'); $res = CIBlockElement::GetList(Array(), array('IBLOCK_ID'=>$arFields["PARAM2"], 'ID'=>$arFields["ITEM_ID"]), false, array("nPageSize"=>1), Array('IBLOCK_ID', 'ID', 'PROPERTY_NAME_ENG', 'PROPERTY_PREVIEW_TEXT_ENG', 'IBLOCK_CODE')); if($ob = $res->GetNext()){ CSearch::Index( $ob['IBLOCK_ID'], $ob['ID'], Array( "DATE_CHANGE"=>$arFields["LAST_MODIFIED"], "TITLE"=>$ob['~PROPERTY_NAME_ENG_VALUE'], "SITE_ID"=>array('s2'), "PARAM1"=>$arFields["PARAM1"], "PARAM2"=>$arFields["PARAM2"], "PERMISSIONS"=>$arFields["PERMISSIONS"], "URL"=>'/eng/'.$ob['IBLOCK_CODE'].'/'.$ob['ID'].'/', "BODY"=>$ob['~PROPERTY_PREVIEW_TEXT_ENG_VALUE']['TEXT'], "TAGS"=>$arFields["TAGS"], ), false ); } } } return $arFields; } |
Примерный алгоритм настройки поисковых индексов для разных сайтов
23.09.201508:5223.09.2015 08:52:31
Данный пример делает отдельный индекс для англоязычного сайта из общего для всех сайтов инфоблока, заменяя название и описание на текст из отдельных полей для англоязычного сайта: