Меню

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

Просмотров: 112115

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

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

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

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

Для стилей
<link href="/file.css">
Для js файлов
<script 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' />");

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

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

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

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

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

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

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

Кроме того. Внутри ядра 1С-Битрикс есть вспомогательные скрипты и библиотеки: jQuery, Vue, font-awesome итд. Например, четвертый bootstrap и шрифт opensans можно подключить так:
\Bitrix\Main\UI\Extension::load("ui.bootstrap4");

\Bitrix\Main\UI\Extension::load([
    'ui.fonts.opensans',
    'ui.bootstrap4'
]);
Николай Соболев 13.10.2017
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Михаил Базаров 13.10.2017
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Николай Соболев 14.10.2017
Цитата
Михаил Базаров пишет:
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Ну вроде бы как я понимаю он уже подключен и используется в системе в новых версиях или я ошибаюсь?
Михаил Базаров 14.10.2017
Цитата
Николай Соболев написал:
Цитата
Михаил Базаров  пишет:
Цитата
Николай Соболев написал:
Михаил подскажи пожалуйста нужно ли подключать bootstrap в новых версиях битрикса
Если bootstrap нужен при верстке-то можно. Если не используется-то не надо.
В общем, по желанию
Ну вроде бы как я понимаю он уже подключен и используется в системе в новых версиях или я ошибаюсь?
Нет, его нужно вручную прописывать в head. И в нескольких компонентах прописан (точно в умном фильтре и оформлении заказа), там просто комментируете эти строчки- где то в верху шаблона
nikolaevevge 25.12.2017
Вы пишите о правильном подключении JS имея ввиду Asset::getInstance()->addJs, но данный метод не всегда подходит. Например сайт работает в кодировке cp1251(она же windows-1251), и необходимо подключить кнопки шары Яндекс в соц-сети, JavaScript которых выложен на яндекс в кодировке UTF-8. Так вот метод addJs не имеет возможности указать кодировку. Решение задачи на форуме битрикса по ссылке(в соответствии с ответом техподдержки битрикс метод является стандартным): https://dev.1c-bitrix.ru/community/forums/forum6/topic104055/
Михаил Базаров 25.12.2017
Цитата
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"....../>
Mansher 18.07.2018
Добрый день! Скажите, а как вывести на страницу детального просмотра иконки (доставка, гарантия, и т.д) в виде изображения.
Михаил Базаров 18.07.2018
Цитата
Mansher написал:
Добрый день! Скажите, а как вывести на страницу детального просмотра иконки (доставка, гарантия, и т.д) в виде изображения.
Можно создать инфоблок с этими иконками (в картинку анонса их накидать- например)
и вывести в карточке товара через API
Примерно так
https://camouf.ru/blog-note/1487/
Гость 06.09.2024
Не понимаю как такое может быть:
addString  - работает, в коде есть. addCss - не видит. Что не так??


use Bitrix\Main\Page\Asset;
Asset::getInstance()->addString('<link href="' . SITE_TEMPLATE_PATH . '/vendor/aos/aos.css" type="text/css" rel="stylesheet" />');
Asset::getInstance()->addString('<link href="' . SITE_TEMPLATE_PATH . '/vendor/bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" />');
Asset::getInstance()->addCss("/templates/demo/01234.css");
Михаил Базаров 07.09.2024
А если так?
Код
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/vendor/aos/aos.css');
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/vendor/bootstrap/css/bootstrap.min.css');
Asset::getInstance()->addCss(SITE_TEMPLATE_PATH . '/templates/demo/01234.css');

Стоимость и сроки разработки сайтов и приложений

Окончательная стоимость и сроки разработки сайта формируются после обсуждения деталей на этапе заказа. Как правило, они редко выходят за обозначенные ниже рамки.

Интернет магазин: разработка с нуля от 400 000 руб.
от 5-ти недель

Cоздание интернет-магазина на 1С-Битрикс. Разработка с нуля, оптимизация кода под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Сайт на готовом решении / шаблоне от 150 000 руб.
от 7-ми дней

Готовое решение — вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Запускается на одном из 200-та (на ваш выбор) готовых решений.

Мобильное приложение от 400 000 руб.
от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

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