В шаблоне сайта на CMS 1С-Битрикс, чтобы вывести SEO теги, js и css скрипты в <head> нужно добавить код:
<?$APPLICATION->ShowHead();?>
Как написано в оф. документации:
CMain::ShowHead - это метод предназначен для вывода в шаблоне сайта основных полей тега <head>: мета-теги Content-Type, robots, keywords, description; стили CSS; скрипты, заданные через CMain::AddHeadScript.
Если посмотреть исходный код, то можно увидеть, что делает этот метод:
<?php
// CMain::ShowHead()
// /bitrix/modules/main/classes/general/main.php:837
public function ShowHead($bXhtmlStyle=true)
{
echo '<meta http-equiv="Content-Type" content="text/html; charset='.LANG_CHARSET.'"'.($bXhtmlStyle? ' /':'').'>'."\n";
$this->ShowMeta("robots", false, $bXhtmlStyle);
$this->ShowMeta("keywords", false, $bXhtmlStyle);
$this->ShowMeta("description", false, $bXhtmlStyle);
$this->ShowLink("canonical", null, $bXhtmlStyle);
$this->ShowCSS(true, $bXhtmlStyle);
$this->ShowHeadStrings();
$this->ShowHeadScripts();
}
Если в вашем Битриксе нет этой галки
То. чтобы перенести вывод js достаточно метод ShowHeadScripts() перенести в конец сайта, а остальные методы вызывать в <head>.
Но тут есть одна особенность, для вывода "Эрмитаж" нужно подключать скрипты в <head>. Поэтому, для админа будем выводить исходный ShowHead(), а для остальных пользователей js скрипты уберём в конец сайта.
Так же метод ShowHeadStrings() может вывести js, поэтому его тоже перенесём в конец тела страницы.
Пример реализации:
<head> <? function ShowHeadCustom($bXhtmlStyle=true) { global $APPLICATION; echo '<meta http-equiv="Content-Type" content="text/html; charset='.LANG_CHARSET.'"'.($bXhtmlStyle? ' /':'').'>'."\n"; $APPLICATION->ShowMeta("robots", false, $bXhtmlStyle); $APPLICATION->ShowMeta("keywords", false, $bXhtmlStyle); $APPLICATION->ShowMeta("description", false, $bXhtmlStyle); $APPLICATION->ShowLink("canonical", null, $bXhtmlStyle); $APPLICATION->ShowCSS(true, $bXhtmlStyle); } global $USER; if($USER->IsAdmin()){ $APPLICATION->ShowHead(); } else { ShowHeadCustom(); } ?> <title><?$APPLICATION->ShowTitle()?></title> </head> <body> ... ... <? /*И где то в конце страницы выводим js*/ if(!$USER->IsAdmin()){ $APPLICATION->ShowHeadStrings(); $APPLICATION->ShowHeadScripts(); } ?> </body> </html>
Иногда требуется подключить js ядро Битрикса ( BX ) . Для этого нужно написать:
<?CJSCore::Init(array('ajax', 'window')) ?>