Разобрался сам. Поменял пару строк в двух функциях.
Кому интересно:
Изменил функцию PreGenerateRSS
[CODE] function PreGenerateRSS($IBLOCK_ID, $yandex = true)
{
global $DB;
$strSql =
"SELECT DISTINCT B.*, ".$DB->DateToCharFunction("B.TIMESTAMP_X")." as TIMESTAMP_X, ".
" l.SERVER_NAME as SERVER_NAME, l.CHARSET ".
"FROM b_iblock B LEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID ".
"left join b_lang l on l.LID = B.LID ".
"WHERE B.ID = ".IntVal($IBLOCK_ID).
" AND IBG.GROUP_ID IN (2) ".
" AND IBG.PERMISSION>='R'".
" AND (IBG.PERMISSION='X' OR B.ACTIVE='Y')";
$dbr = $DB->Query($strSql);
$bAccessable = False;
if (($arIBlock = $dbr->GetNext()) && ($arIBlock["RSS_FILE_ACTIVE"]=="Y" && !$yandex || $arIBlock["RSS_YANDEX_ACTIVE"]=="Y" && $yandex))
$bAccessable = True;
if (!$bAccessable) return "";
$strRes = "";
$strRes .= "<"."?xml version=\"1.0\" encoding=\"".$arIBlock["CHARSET"]."\"?".">\n";
$strRes .= "<rss version=\"2.0\"";
// $strRes .= "<rss version=\"2.0\" xmlns=\"http://backend.userland.com/rss2\"";
// if ($yandex) $strRes .= " xmlns:yandex=\"http://news.yandex.ru\"";
$strRes .= ">\n";
$limit_num = false;
$limit_day = 2;
if (!$yandex)
{
$limit_num = false;
if (strlen($arIBlock["RSS_FILE_LIMIT"])>0 && IntVal($arIBlock["RSS_FILE_LIMIT"])>0)
$limit_num = IntVal($arIBlock["RSS_FILE_LIMIT"]);
$limit_day = false;
if (strlen($arIBlock["RSS_FILE_DAYS"])>0 && IntVal($arIBlock["RSS_FILE_DAYS"])>0)
$limit_day = IntVal($arIBlock["RSS_FILE_DAYS"]);
}
$strRes .= CIBlockRSS::GetRSSText($arIBlock, $limit_num, $limit_day, $yandex);
$strRes .= "</rss>\n";
$rss_file = $_SERVER["DOCUMENT_ROOT"].COption::GetOptionString("iblock", "path2rss", "/upload/");
if ($yandex)
$rss_file .= "yandex_rss_".IntVal($arIBlock["ID"]).".xml";
else
$rss_file .= "iblock_rss_".IntVal($arIBlock["ID"]).".xml";
$fp = fopen($rss_file, "w");
fwrite($fp, $strRes);
fclose($fp);
global $pPERIOD;
$pPERIOD = IntVal($arIBlock["RSS_TTL"])*60*60;
return "CIBlockRSS::PreGenerateRSS(".$IBLOCK_ID.", ".($yandex?"true":"false").");";
}[/CODE]
и поменял в функции GetRSSText строки
[CODE] if(defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME)>0)
$serverName = SITE_SERVER_NAME;
else
$serverName = COption::GetOptionString("main", "server_name", "xxx.com");
[/CODE]
на строку
[CODE]$serverName = $arIBLOCK["SERVER_NAME"];[/CODE]