ГлавнаяБлогСтатичная ли страница? [Bitrix API]

Статичная ли страница? [Bitrix API]

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
23 августа 2011 г.
1 мин чтения

В 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.