В шаблоне сайта на 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')) ?>
Комментарии 1