Статичная ли страница? [bitrix api]

Недавно на форуме был задан вопрос, как можно определить статическую страницу в битриксе. Видимо у людей мало опыта и они просто не знают что изначально все публичные файла сайта битрикса статичные, а уже потом на них можно добавить вывод динамического содержимого.

Мне стало интересно как это сделать. Я давно подозревал о существовании класса для парсинга php файлов, он используется когда добавляется компонент на страницу например. В ядре я его нашел и там оказался статичный метод PHPParser::ParseScript($s_File);, он принимает содержимое файла в виде строки, так что используем $APPLICATION->GetFileContent($s_FilePatch);. Если есть компоненты, то вернется массив с описанием каждого. Вот что получилось:

[source language=’php’]
function isStaticPage()
{
global $APPLICATION;
require_once($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/classes/general/php_parser.php»);

$s_FilePatch = CSite::GetSiteDocRoot(SITE_ID).($_SERVER[‘SCRIPT_NAME’] == ‘/bitrix/urlrewrite.php’) ? $_SERVER[‘REAL_FILE_PATH’] : $_SERVER[‘SCRIPT_NAME’];
$s_File = $APPLICATION->GetFileContent($s_FilePatch);
$ar_Components = PHPParser::ParseScript($s_File);
return ( count($ar_Components) > 0 ) ? false : true;
}

[/source]