Загрузка страницы..
Битрикс один из способов перенести js в конец сайта
Как на CMS 1C-Битрикс можно перенести вывод js кода в низ сайта (footer)
2016-05-26T23:05 26 мая 2016 23:05
Просмотров: 4449

В шаблоне сайта на 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

комментарий Студент
Студент
2017-08-30T12:5330 авг. 2017 12:53
Спасибо, работает ! Только для версии Битрикс 12.0.8 нужно закомментировать строку $APPLICATION->ShowLink("canonical", null, $bXhtmlStyle);

Добавить комментарий

Читайте так же:

web - программированиеБитрикс
12 апр. 2016 17:04
3072
web - программированиеБитрикс
12 февр. 2016 10:02
5776
Яндекс.Метрика Яндекс.Метрик