Вход / Регистрация 0
г. Красноярск
Дубровинского 110, оф. 503
Примерный алгоритм настройки поисковых индексов для разных сайтов

Примерный алгоритм настройки поисковых индексов для разных сайтов

Данный пример делает отдельный индекс для англоязычного сайта из общего для всех сайтов инфоблока, заменяя название и описание на текст из отдельных полей для англоязычного сайта:

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;
}