• Модуль: 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;
}