Есть автогенератор карты на php
<?php
//Отключаем статистику Bitrix
define("NO_KEEP_STATISTIC", true);
//Подключаем движок
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
//устанавливаем тип ответа как xml документ
header('Content-Type: application/xml; charset=utf-8');
$array_pages = array();
//Простые текстовые страницы: начало
$array_pages[] = array(
'NAME' => 'Главная страница',
'URL' => '/',
);
$array_pages[] = array(
'NAME' => 'Вакансии',
'URL' => '/vacancies/',
);
$array_pages[] = array(
'NAME' => 'Производство',
'URL' => '/directions/production/',
);
$array_pages[] = array(
'NAME' => 'IT & Digital',
'URL' => '/directions/digital/',
);
$array_pages[] = array(
'NAME' => 'Офис',
'URL' => '/directions/office/',
);
$array_pages[] = array(
'NAME' => 'Молодым специалистам',
'URL' => '/directions/graduates/',
);
$array_pages[] = array(
'NAME' => 'Предприятия',
'URL' => '/units/',
);
$array_pages[] = array(
'NAME' => 'Предприятия',
'URL' => '/privacy_policy/'
);
//Простые текстовые страницы: конец
$array_iblocks_id = array('1', '4', '5'); //ID инфоблоков, разделы и элементы которых попадут в карту сайта
if(CModule::IncludeModule("iblock"))
{
foreach($array_iblocks_id as $iblock_id)
{
//Список разделов
//Список элементов
$res = CIBlockSection::GetList(
array(),
Array(
"IBLOCK_ID" => $iblock_id,
"ACTIVE" => "Y" ,
),
false,
array(
"ID",
"NAME",
"SECTION_PAGE_URL",
));
while($ob = $res->GetNext())
{
$array_pages[] = array(
'NAME' => $ob['NAME'],
'URL' => $ob['SECTION_PAGE_URL'],
);
}
//Список элементов
$res = CIBlockElement::GetList(
array(),
Array(
"IBLOCK_ID" => $iblock_id,
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y" ,
),
false,
false,
array(
"ID",
"NAME",
"DETAIL_PAGE_URL",
));
while($ob = $res->GetNext())
{
$array_pages[] = array(
'NAME' => $ob['NAME'],
'URL' => $ob['DETAIL_PAGE_URL'],
);
}
}
}
//Создаём XML документ: начало
$date = date("d/M/y H:m:s");
$xml_content = '';
$site_url = 'https://'.$_SERVER['HTTP_HOST'];
$quantity_elements = 0;
foreach($array_pages as $v)
{
$quantity_elements++;
$xml_content.='
<url>
<loc>'.$site_url.$v['URL'].'</loc>
</url>';
}
//Создаём XML документ: конец
//Выводим документ
echo '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
'.$xml_content.'
</urlset>
';
?>
Работает исправно, но только главную страницу выдает несколько раз, из-за чего в сгенерированном сайтмапе бывает 10-15 штук главных страниц, как пофиксить?