Данное решение чистит все JS и CSS установленные 1С-Битриксом. Т.е. убирает Kernel JS и CSS с сайта для не авторизованных посетителей.
Для авторизованных системные скрипты остаются.
Добавляем в php_interface/init.php (в /local/php_interface/init.php также работает):
<?php
use \Bitrix\Main\EventManager;
$event_manager = EventManager::getInstance();
$event_manager->addEventHandler('main', 'OnEndBufferContent', 'deleteKernelScripts');
function deleteKernelScripts(&$content)
{
global $USER;
if (defined("ADMIN_SECTION")) {
return;
}
if (is_object($USER) && $USER->IsAuthorized()) {
$ar_patterns_to_remove = [
'/<script[^>]+?>var _ba = _ba[^<]+<\/script>/',
];
} else {
$ar_patterns_to_remove = [
'/<script.+?src=".+?js\/main\/core\/.+?(\.min|)\.js\?\d+"><\/script\>/',
'/<script.+?src="\/bitrix\/js\/.+?(\.min|)\.js\?\d+"><\/script\>/',
'/<link.+?href="\/bitrix\/js\/.+?(\.min|)\.css\?\d+".+?>/',
'/<link.+?href="\/bitrix\/components\/.+?(\.min|)\.css\?\d+".+?>/',
'/<script.+?src="\/bitrix\/.+?kernel_main.+?(\.min|)\.js\?\d+"><\/script\>/',
'/<link.+?href=".+?kernel_main\/kernel_main(\.min|)\.css\?\d+"[^>]+>/',
'/<link.+?href=".+?main\/popup(\.min|)\.css\?\d+"[^>]+>/',
'/<script.+?>if\(\!window\.BX\)window\.BX.+?<\/script>/',
'/<script[^>]+?>\(window\.BX\|\|top\.BX\)\.message[^<]+<\/script>/',
'/<script[^>]+?>var _ba = _ba[^<]+<\/script>/',
'/<script[^>]+?>.+?bx-core.*?<\/script>/',
'/<script[^>]*?>[\s]*BX\.(setCSSList|setJSList)[^<]+<\/script>/',
'#<script[^>]*?>[^<]+BX\.ready[^<]+<\/script>#',
];
}
$content = preg_replace($ar_patterns_to_remove, "", $content);
$content = preg_replace("/\n{2,}/", "\n", $content);
}
Готово.
Количество просмотров: 8