- Модуль: seo
- Путь к файлу: ~/bitrix/modules/seo/lib/Sitemap/Internals/Iblock.php
- Класс: BitrixSeoSitemapInternalsIblockTable
- Вызов: IblockTable::getByIblock
static function getByIblock($fields, $itemType)
{
$sitemaps = array();
if(!isset(self::$iblockCache[$fields['IBLOCK_ID']]))
{
self::$iblockCache[$fields['IBLOCK_ID']] = array();
$dbRes = self::getList(array(
'filter' => array(
'IBLOCK_ID' => $fields['IBLOCK_ID']
),
'select' => array('SITEMAP_ID',
'SITE_ID' => 'SITEMAP.SITE_ID', 'SITEMAP_SETTINGS' => 'SITEMAP.SETTINGS',
'IBLOCK_CODE' => 'IBLOCK.CODE', 'IBLOCK_XML_ID' => 'IBLOCK.XML_ID',
'DETAIL_PAGE_URL' => 'IBLOCK.DETAIL_PAGE_URL',
'SECTION_PAGE_URL' => 'IBLOCK.SECTION_PAGE_URL',
),
));
while($res = $dbRes->fetch())
{
self::$iblockCache[$fields['IBLOCK_ID']][] = $res;
}
}
foreach(self::$iblockCache[$fields['IBLOCK_ID']] as $res)
{
$sitemapSettings = unserialize($res['SITEMAP_SETTINGS'], ['allowed_classes' => false]);
$add = false;
if($itemType == self::TYPE_SECTION)
{
$add = self::checkSection(
$fields['ID'],
$sitemapSettings['IBLOCK_SECTION_SECTION'][$fields['IBLOCK_ID']],
$sitemapSettings['IBLOCK_SECTION'][$fields['IBLOCK_ID']]
);
}
else
{
if(is_array($fields['IBLOCK_SECTION']) && count($fields['IBLOCK_SECTION']) > 0)
{
foreach($fields['IBLOCK_SECTION'] as $sectionId)
{
$add = self::checkSection(
$sectionId,
$sitemapSettings['IBLOCK_SECTION_ELEMENT'][$fields['IBLOCK_ID']],
$sitemapSettings['IBLOCK_ELEMENT'][$fields['IBLOCK_ID']]
);
if($add)
{
break;
}
}
}
else
{
$add = $sitemapSettings['IBLOCK_ELEMENT'][$fields['IBLOCK_ID']] == 'Y';
}
}
if($add)
{
$sitemaps[] = array(
'IBLOCK_CODE' => $res['IBLOCK_CODE'],
'IBLOCK_XML_ID' => $res['IBLOCK_XML_ID'],
'DETAIL_PAGE_URL' => $res['DETAIL_PAGE_URL'],
'SECTION_PAGE_URL' => $res['SECTION_PAGE_URL'],
'SITE_ID' => $res['SITE_ID'],
'PROTOCOL' => $sitemapSettings['PROTO'] == 1 ? 'https' : 'http',
'DOMAIN' => $sitemapSettings['DOMAIN'],
'ROBOTS' => $sitemapSettings['ROBOTS'],
'SITEMAP_DIR' => $sitemapSettings['DIR'],
'SITEMAP_FILE' => $sitemapSettings['FILENAME_INDEX'],
'SITEMAP_FILE_IBLOCK' => $sitemapSettings['FILENAME_IBLOCK'],
);
}
}
return $sitemaps;
}