Генерация sitemap.xml Битрикс для поддоменов

Когда поддомены подключаются  к директории основного сайта им нужен свой sitemap.xml, его можно сгенерировать на лету. Ниже представленный код можно для удобства оформить в класс.
logo
logo
PHP
  //Пишем правила в urlrewrite.php
  array(
        "CONDITION"   => "#^/sitemap.xml.*#",
        "RULE" => "",
        "PATH" => "/sitemap.php",
    ),
   array(
        "CONDITION"   => "#^/sitemap-iblock-([0-9]+).xml.*#",
        "RULE" => 'IBLOCK_ID=$1',
        "PATH" => "/sitemap_iblock.php",
    ),
   array(
        "CONDITION"   => "#^/sitemap-iblock-([0-9]+)-part-([0-9]+).xml.*#",
        "RULE" => 'IBLOCK_ID=$1&PART=$2',
        "PATH" => "/sitemap_iblock.php",
    )




//Создаем в корне сайта файл sitemap.php  и вставляем следующий код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
header('Content-type: text/xml');
$xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' ?>\n".'<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />');

CModule::IncludeModule("iblock");

$iblock_id    = 4;
$server_main  = "moysite.ru";
$domain       = "https://".$_SERVER["SERVER_NAME"];
$limit        = 5000; //Лимит записей для одной части

//Выбираем записи в зависимости основной это сайт или поддомен
if($_SERVER['SERVER_NAME'] != $server_main)
{
    $arFilter = array('IBLOCK_ID' => $iblock_id, "ACTIVE" => "Y", "UF_SHOW_SUBDOMAIN" => 1);
}
else
{
    $arFilter = array('IBLOCK_ID' => $iblock_id, "ACTIVE" => "Y");
}

$rsSect = CIBlockSection::GetList(array('SORT' => 'ASC'), $arFilter, false, Array("UF_*"));

//Считаем сколько получается частей карты
$count = $rsSect->SelectedRowsCount();
$maps = ceil($count / $limit);

if($count <= $limit)
{
    //Выводим все записи в одном файле
    $sitemap = $xml->addChild('sitemap');
    $sitemap->addChild('loc', $domain."/sitemap-iblock-".$iblock_id.".xml");
    $sitemap->addChild('lastmod',date('c',time()));
}
else
{
    //Разбиваем карту на части
    for($i=1; $i<=$maps; $i++)
    {
        $sitemap = $xml->addChild('sitemap');
        $sitemap->addChild('loc', $domain."/sitemap-iblock-".$iblock_id."-part-".$i.".xml");
        $sitemap->addChild('lastmod',date('c',time()));
    }
}

echo $xml->asXML();




//Создаем в корне сайта еще файл sitemap_iblock.php  и вставляем следующий код
<?
if(empty($_REQUEST['IBLOCK_ID']))
    return;

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
header('Content-type: text/xml');
$xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' ?>\n".'<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" />');

CModule::IncludeModule("iblock");

$server_main  = "moysite.ru";
$domain       = "https://".$_SERVER["SERVER_NAME"];
$limit        = 5000; //Лимит записей для одной части

//Выбираем записи в зависимости основной это сайт или поддомен
if($_SERVER['SERVER_NAME'] != $server_main)
{
    $arFilter = array('IBLOCK_ID' => $_REQUEST['IBLOCK_ID'], "ACTIVE" => "Y", "UF_SHOW_SUBDOMAIN" => 1);
}
else
{
    $arFilter = array('IBLOCK_ID' => $_REQUEST['IBLOCK_ID'], "ACTIVE" => "Y");
}

//Выводим нужную часть если она указана
if($_REQUEST['PART'])
{
    $rsSect = CIBlockSection::GetList(array('SORT' => 'ASC'), $arFilter, false, Array("UF_*"), Array("iNumPage" => $_REQUEST['PART'], "nPageSize" => $limit));
}
else
{
    $rsSect = CIBlockSection::GetList(array('SORT' => 'ASC'), $arFilter, false, Array("UF_*"));
}

while($arSect = $rsSect->GetNext())
{
    $url = $xml->addChild('url');
    $url->addChild('loc', $domain.$arSect['SECTION_PAGE_URL']);
    $url->addChild('lastmod',date('c',strtotime($arSect['TIMESTAMP_X'])));
}

echo $xml->asXML();

Спасибо! Заявка успешно отправлена, мы с Вами свяжемся в ближайшее время!