Вот эту функцию вызывает агент при запуске.
Здесь как видно нет определения к какому сайту принадлежит новость, а просто подставляются значения #SITE_DIR# и LANG_CHARSET.
Ребята, помогите исправить функцию так, чтобы она делала то что нужно, а именно
определяля принадлежность новости к тому или иному сайту и подставляла уже соотв. значения #SITE_DIR# и LANG_CHARSET.
Код |
---|
function PreGenerateRSS($IBLOCK_ID, $yandex = true)
{
global $DB;
$strSql =
"SELECT DISTINCT B.*, ".$DB->DateToCharFunction("B.TIMESTAMP_X")." as TIMESTAMP_X ".
"FROM b_iblock B LEFT JOIN b_iblock_group IBG ON IBG.IBLOCK_ID=B.ID ".
"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=\"".LANG_CHARSET."\"?".">\n";
$strRes .= "<rss version=\"2.0\"";
$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").");";
} |