Предупреждение:
Все описанное в посте носит лишь экспериментальный характер. Не стоит использовать это на боевых проектах без особой надобности и ради интереса.
Уже много раз поднимался вопрос о том, как же вынести скрипты битрикса из showHeadStrings().
Вот и я задался таким. После 10 минут изучения родилась такая функция.
Теперь можно управлять тем, где выводить скрипты.
В шапке теперь можно написать так:
А где-нибудь на странице в футере:
Но были замечены баги. Например, для админа сыплется очень много ошибок, но это решается подключением старым способом для всех, у кого есть права на панель управления. Так же не тестил с композитом, т.к. не оказалось под рукой такого сайта.
P.S.
А вот и результат. Я первый раз увидел, что мой сайт прошел тест в гугле
Если же вам нужно больше свободы, то выводим скрипты следующей функцией:
Теперь мы имеем 4 вида HeadScripts:
1 - LANG + KERNEL
2 - TEMPLATE + PAGE
3 - BODY
0(false) - LANG + KERNEL + TEMPLATE + PAGE
Расшифровка:
LANG - языковые скрипты
KERNEL - ядро
TEMPLATE - шаблонные скрипты
PAGE - не понял точно, что это
BODY - Тоже не совсем понял.
Все описанное в посте носит лишь экспериментальный характер. Не стоит использовать это на боевых проектах без особой надобности и ради интереса.
Уже много раз поднимался вопрос о том, как же вынести скрипты битрикса из showHeadStrings().
Вот и я задался таким. После 10 минут изучения родилась такая функция.
function ShowHeadStringsExt($type = "DEFAULT"){ global $APPLICATION; $APPLICATION->AddBufferContent(array(&$APPLICATION, "GetHeadStrings"), $type); } |
В шапке теперь можно написать так:
ShowHeadStringsExt('BEFORE_CSS'); $APPLICATION->ShowMeta("robots", false, $bXhtmlStyle); $APPLICATION->ShowMeta("keywords", false, $bXhtmlStyle); $APPLICATION->ShowMeta("description", false, $bXhtmlStyle); $APPLICATION->ShowCSS(true, $bXhtmlStyle); ShowHeadStringsExt('AFTER_CSS'); |
<? ShowHeadStringsExt(); $APPLICATION->ShowHeadScripts(); ?> |
P.S.
А вот и результат. Я первый раз увидел, что мой сайт прошел тест в гугле
Если же вам нужно больше свободы, то выводим скрипты следующей функцией:
function ShowHeadScriptsExt($type=false) { global $APPLICATION; $APPLICATION->AddBufferContent(array(&$APPLICATION, "GetHeadScripts"), $type); } //Где $type = 0(false),1,2,3 |
1 - LANG + KERNEL
2 - TEMPLATE + PAGE
3 - BODY
0(false) - LANG + KERNEL + TEMPLATE + PAGE
Расшифровка:
LANG - языковые скрипты
KERNEL - ядро
TEMPLATE - шаблонные скрипты
PAGE - не понял точно, что это
BODY - Тоже не совсем понял.