Телеграм: @camouf_ru Почта: mihail@bazarow.ru

Правильное подключение стилей и скриптов в Битрикс

Есть несколько способов подключения файлов стилей и скриптов, при верстке шаблонов в системе управления 1С-Битрикс. Если вы получаете готовую верстку в HTML/CSS, то имеет смысл грамотно подключить файлы стилей, js и мета теги при интеграции шаблона в Битрикс

Для чего подключать скрипты и js через API

Это нужно для правильной оптимизации сайта. CMS Битрикс, умеет самостоятельно объединять и сжимать подключаемые файлы стилей и js файлы. Если вы подключите их по старинке, простыми вставками вида

Для стилей
<link href="/file.css">
Для js файлов
<script type="text/javascript" src="/file.js">

Однако тогда вы не сможете перенести оптимизацию сайта на плечи системы управления. На много правильнее, подключать эти файлы с помощью API Битрикс

До выхода нового ядра D7

Для подключения скриптов
$APPLICATION->AddHeadScript(SITE_TEMPLATE_PATH."/js/file.js" );

Подключение css
$APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH."/js/file.css", true);

Подключение мета тегов или сторонних файлов
$APPLICATION->AddHeadString("name='<meta name='yandex-verification' content='62be9ea1' />'");

В D7:

use Bitrix\Main\Page\Asset;

Для подключения css
Asset::getInstance()->addCss("/bitrix/css/main/bootstrap.min.css");

Для подключения скриптов
Asset::getInstance()->addJs(SITE_TEMPLATE_PATH . "/js/myscripts.js");

Подключение мета тегов или сторонних файлов
Asset::getInstance()->addString("<link rel='shortcut icon' href='/local/images/favicon.ico' />");

По условиям обратной совместимости, использовать можно оба метода. Лично я предпочитаю подключать по старинке, без использования D7- но оба способа работают правильно и принципиальной разницы не имеют

Подключив внешние файлы правильно, через ядро Битрикс, вы сможете максимально оптимизировать создаваемый сайт. Объединить и сжать css файлы

Далее в настройках Битрикс: Настройки- Настройки Модулей -Главный модуль : включаем объединение и сжатие JS файлов, объединение css файлов.

Самое главное, вы сможете подключать необходимые файлы в "объединение" по необходимости, в зависимости от требуемого функционала страницы или компонента. То есть, по факту у вас вегда будет один файл css и один js, но их состав и соотвественно объем, будет разный в зависимости от текущей страницы или раздела сайта

Подключение стилей и js в шаблонах компонентов

Если нужно подключить стили и скрипты, в нутри шаблонов компонентов. Например, вы используете слайдер, на основе списка новостей: у него может быть много js и css и не целесообразно, подключать его кишочки, глобально ко всему сайту. Просто поспользуйтесь такой конструкцией

$this->addExternalCss("/local/styles.css");
$this->addExternalJS("/local/liba.js");

Оптимизируйте. Ни кто не любит тормозящие сайты, тем более это просто и не требует больших трудо затрат

Просмотров: 64333 | Комментариев: 17

Комментарии

Внимание! все сообщения проходят премодерацию. Ваше сообщение появится после проверки
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
Загрузить файл
Нажимая кнопку "Отправить", Вы принимаете условия
Политики конфиденциальности и обработки персональных данных
Ильёс Газиев
Вот такой вопрос я написал небольшой компонент шаблон там со одним стилим и скриптом для меня он загружается нормально без проблем а для других без стилей
Имя Цитировать
Ильёс Газиев
Цитата
Ильёс Газиев пишет:
Вот такой вопрос я написал небольшой компонент шаблон там со одним стилим и скриптом для меня он загружается нормально без проблем а для других без стилей
я и кэш очищал и отключал в компоненте его но без результатов то загружает то нет
Имя Цитировать
Александр Кузнецов
На самом деле остается открытым вопрос относительно оптимальности самой "оптимизации" битриксом ресурсов.
Имя Цитировать
Михаил Базаров
Цитата
Александр Кузнецов пишет:
На самом деле остается открытым вопрос относительно оптимальности самой "оптимизации" битриксом ресурсов.
Если с самого начала сборки сайта, сделать все правильно- проблем быть не должно
Имя Цитировать
Николай Соболев
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Имя Цитировать
Михаил Базаров
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Имя Цитировать
Николай Соболев
Цитата
Михаил Базаров пишет:
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Ну вроде бы как я понимаю он уже подключен и используется в системе в новых версиях или я ошибаюсь?
Имя Цитировать
Михаил Базаров
Цитата
Николай Соболев написал:
Цитата
Михаил Базаров  пишет:
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Ну вроде бы как я понимаю он уже подключен и используется в системе в новых версиях или я ошибаюсь?
Нет, его нужно вручную прописывать в head. И в нескольких компонентах прописан (точно в умном фильтре и оформлении заказа), там просто комментируете эти строчки- где то в верху шаблона
Имя Цитировать
Велес
Цитата
Михаил Базаров пишет:
Если с самого начала сборки сайта, сделать все правильно- проблем быть не должноПожал
Пожалуйста, ссылку дайте, где почитать об этом можно?)
Имя Цитировать
nikolaevevge
Вы пишите о правильном подключении JS имея ввиду Asset::getInstance()->addJs, но данный метод не всегда подходит. Например сайт работает в кодировке cp1251(она же windows-1251), и необходимо подключить кнопки шары Яндекс в соц-сети, JavaScript которых выложен на яндекс в кодировке UTF-8. Так вот метод addJs не имеет возможности указать кодировку. Решение задачи на форуме битрикса по ссылке(в соответствии с ответом техподдержки битрикс метод является стандартным): https://dev.1c-bitrix.ru/community/forums/forum6/topic104055/
Имя Цитировать
Михаил Базаров
Цитата
nikolaevevge написал:
Вы пишите о правильном подключении JS имея ввиду Asset::getInstance()->addJs, но данный метод не всегда подходит. Например сайт работает в кодировке cp1251(она же windows-1251), и необходимо подключить кнопки шары Яндекс в соц-сети, JavaScript которых выложен на яндекс в кодировке UTF-8. Так вот метод addJs не имеет возможности указать кодировку. Решение задачи на форуме битрикса по ссылке(в соответствии с ответом техподдержки битрикс метод является стандартным):  https://dev.1c-bitrix.ru/community/forums/forum6/topic104055/
Если это правильное но не обязательное подключение, само собой, если по каким-то причинам не подходит или не совместимо- можно и по старинке отдельные скрипты подключать.

Еще и отключить объединение (например, счетчик Li не адекватно себя ведет) и перенос этих скриптов, можно через
Код
 <script data-skip-moving="true"....../>
Имя Цитировать
Lu Sh
Добрый день! Подскажите,пожалуйста,можно ли не подключать штатную библиотеку JQuery? Если да,то как? Мне нужно подключить свою, но что бы я не делала,все равно подключается штатная 1.8, и ничего не работает. Как правильно это сделать?
Заранее благодарю!
Имя Цитировать
Mansher
Добрый день! Скажите, а как вывести на страницу детального просмотра иконки (доставка, гарантия, и т.д) в виде изображения.
Имя Цитировать
Михаил Базаров
Цитата
Mansher написал:
Добрый день! Скажите, а как вывести на страницу детального просмотра иконки (доставка, гарантия, и т.д) в виде изображения.
Можно создать инфоблок с этими иконками (в картинку анонса их накидать- например)
и вывести в карточке товара через API
Примерно так
https://camouf.ru/blog-note/1487/
Имя Цитировать
Иван Русин
Приветствую, Михаил.
Рекомендую вам добавить в статью следующую информацию:

1. Сказать людям, что бы проверяли наличие $APPLICATION->ShowHead(); в html секции head шаблона.

2. Не обязательно подключать скрипты и стили отдельно особыми функциями.
Папка шаблона простого компонента может содержать следующие подпапки и файлы:
— файл style.css, который определяет стили, необходимые данному шаблону.
— файл script.js, который определяет и подключает яваскрипты, необходимые данному шаблону. Этот файл может отсутствовать.
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2829&LESSON_PATH=3913.4565.2829
Имя Цитировать
Александр Марчелло
Добрый день! Спасибо за статью, столкнулся с задачей реализовать страницу в админке и верстку реализовать на бутстрапе, как подключать правильно в админке стили и скрипты так, чтобы они в head попадали?
Имя Цитировать
Guest
Ошибки в статье исправьте....
Имя Цитировать
Поделиться страницей Спасибо, это помогает развивать сайт.
Мой youtube канал. Сюда я выкладываю видео уроки по разработке сайтов и не только. Подписывайтесь, скоро будет серия свежих видео-инструкций:
Перейти на канал
Заметки разработчика

Примерно с 2013-го года пишу, короткие и не очень, заметки по разработке сайтов на Битрикс. Возможно, будут полезны кому-то еще. Во всех заметках есть возможность комментирования и обсуждения. Вы можете задавать уточняющие вопросы прямо там- отвечаю или дополняю заметки по возможности.

Заказaть разработку attention