В Bitrix все публичные файлы сайта технически являются статическими, и динамическое содержимое добавляется поверх через компоненты. Функция ниже определяет, есть ли на странице хоть один компонент, используя класс PHPParser.
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;
}Логика:
- Определяем путь к файлу страницы: если используется ЧПУ (
urlrewrite.php), берёмREAL_FILE_PATH, иначеSCRIPT_NAME. - Считываем содержимое файла через
GetFileContent. PHPParser::ParseScriptизвлекает список компонентов из файла.- Если компоненты найдены — страница динамическая, возвращаем
false. Если нет — статическая, возвращаемtrue.
