Подключение файлов js и css
Посмотрим, как правильно подключать дополнительные файлы стилей и скрипты в шаблон сайта, чтобы корректно работала настройка сжатия файлов js и css Настройки -> Настройки модулей -> Главный модуль:
Прямое подключение дополнительных файлов не рекомендуется:
<script type="text/javascript" src="/js/script.js"></script>
Для правильного подключения есть методы:
$APPLICATION->SetAdditionalCSS()для добавления файлов стилей$APPLICATION->AddHeadScript()для добавления скриптов$APPLICATION->SetHeadString()для добавления произвольных строк
$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . '/css/style.css');
$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH . '/js/script.js');
$APPLICATION->SetHeadString('
');
С появлением ядра D7 добавились методы:
\Bitrix\Main\Page\Asset::addCss()для добавления файлов стилей\Bitrix\Main\Page\Asset::addJs()для добавления скриптов\Bitrix\Main\Page\Asset::addString()для добавления произвольных строк
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/css/style.css');
Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . '/js/script.js');
Asset::getInstance()->addString('');
Записи равнозначные, можно использовать и запись без обращения к ядру D7 и с обращением.
$APPLICATION (экземпляр класса CMain) и Asset::getInstance() глобальные объекты. Они доступны после подключения служебной части пролога Битрикса. Таким образом, можно их использовать в любом месте компонента, модуля или шаблона.
// подключение служебной части пролога
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php');
Подключение js и css в шаблоне компонента
Для правильного подключения дополнительных файлов, подключаем их из шаблона компонента, а не прописываем в шаблон сайта:
$this->addExternalJS('/local/js/script.js');
$this->addExternalCss('/local/css/style.css');
