Битрикс. Убираю системные скрипты в head сайта

Данное решение чистит все 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


Понравилась статья?

Возврат к списку