Не-не-не, не вариант.
Допустим, у меня есть элемент с названием "элемент1" и свойством "name_eng" - "element1", соответственно, на англоязычном сайте отображается английское имя, а на русском просто название. Соответственно. надо чтоб при поиске на англоязычном сайте выплывало английское имя - а на русском - русское.
Накидал такую функцию:
Код |
---|
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields){
if($arFields["MODULE_ID"] == "iblock"){
if($arFields["PARAM2"]==4 && $arFields['SITE_ID'][1]=='s2'){
CModule::IncludeModule("search");
CModule::IncludeModule("iblock");
$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;
}
|
Насколько такое решение адекватно, может кто подсказать?