Статичная ли страница? [bitrix api]
Авг 23
1С-Битрикс, PHP bitrix api, php_parser Комментарии отключены
Недавно на форуме был задан вопрос, как можно определить статическую страницу в битриксе. Видимо у людей мало опыта и они просто не знают что изначально все публичные файла сайта битрикса статичные, а уже потом на них можно добавить вывод динамического содержимого.
Мне стало интересно как это сделать. Я давно подозревал о существовании класса для парсинга php файлов, он используется когда добавляется компонент на страницу например. В ядре я его нашел и там оказался статичный метод PHPParser::ParseScript($s_File);, он принимает содержимое файла в виде строки, так что используем $APPLICATION->GetFileContent($s_FilePatch);. Если есть компоненты, то вернется массив с описанием каждого. Вот что получилось:
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;
}
RSS
Twitter
Google
Facebook
Skype
Свежие комментарии