Use bitrix main page asset не работает

[баг в битриксе] не подключаются скрипты с внешних ресурсов. опечатка в коде ядра.

создал тему, в header.php хочу вместо стокового jQuery подключить jQuery с CDN яндекса. пишу

результат — jQuery в коде страницы отсутствует.

что делать

идём отладчиком по коду битрикса, находим подозрительное место

исправляем CSS на JS — работает!

видимо или опечатка или плохая «копипаста». ждём обновления с фиксом.

Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?

Цитата
Александр Гусев написал:
Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?
Цитата
Александр Гусев написал:
Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?

Александр, интересный вопрос. Я впервые делаю сайт на битриксе, внимательно прочитал руководство и примеры. Я собственно изначально и написал AddHeadScript, но когда начал отлаживать, обнаружил что AddHeadScript отмечен в коде как deprecated с пометкой » use Asset::getInstance()->addJs» . я так подумал, что авторам битрикса наверное лучше знать что использовать, а что — уже нет, и переписал.

Цитата
Алексей Задойный написал:
Присоединяюсь к Александру. Код Д7 какой-то гигантский и лично для меня (непрограммиста, регулярно работающего с кодом, в основном чужим) это «непонятная херня».

С точки зрения программиста он гораздо лучше структурирован чем старый. Единственно что я не понимаю — это отдельного getInstance. Почему нельзя было определить у классов __callStatic и автоматом вызывать все функции на инстансе? Тогда можно было бы писать Asset::addJs(. ) и код стал бы намного чище.

Источник

Use bitrix main page asset не работает

Битрикс. Правильное подключение файлов js и css в шаблоне

В данной статье мы рассмотрим как правильно подключать дополнительные файлы стилей и скрипты в шаблон сайта, чтобы корректно работа настройка сжатия файлов js и css.

Прямое подключение дополнительных файлов не рекомендуется

Для правильного подключения есть методы $APPLICATION->AddHeadScript() и $APPLICATION->SetAdditionalCSS()

$APPLICATION->AddHeadScript() — нужен для добавления скриптов.

$APPLICATION->SetAdditionalCSS() — для добавления каскадных таблиц стилей

С появлением ядра D7 можно подключать так

Записи равнозначные, можно использовать и запись без обращения к ядру D7 и с обращением.

Подключение js и css а шаблоне компонента

Для правильного подключения дополнительных файлов, подключаем их из шаблона компонента, а не прописывает в шаблон сайта.

В шаблоне компонента прописываем

Данные файлы тогда правильно объединятся с остальными.

Создам для Вас —

    Уникальный адаптивный дизайн Заключение договора

2012 — 2021 ИП Бульденков Антон Валерьевич

Заполните форму

Продолжая использовать этот сайт, Вы принимаете условия политики конфиденциальности и даёте согласие на обработку пользовательских данных. Подробнее

Продолжая использовать этот сайт, Вы принимаете условия политики конфиденциальности и даёте согласие на обработку пользовательских данных (файлов cookie), в том числе с использованием систем аналитики «Яндекс. Метрика» и «Google Analytics», (IP-адрес; версия ОС; версия веб-браузера; сведения об устройстве (тип, производитель, модель); разрешение экрана и количество цветов экрана; наличие программного обеспечения для блокирования рекламы; наличие Cookies; наличие JavaScript; язык ОС и Браузера; время, проведенное на сайте; глубина просмотра; действия пользователя на сайте; географические данные) в целях определения посещаемости сайта. Отказаться от обработки пользовательских данных и использования «cookie» можно, выбрав соответствующие настройки в браузере. Однако это может повлиять на работу некоторых функций сайта. Скрыть

Источник

[баг в битриксе] не подключаются скрипты с внешних ресурсов. опечатка в коде ядра.

создал тему, в header.php хочу вместо стокового jQuery подключить jQuery с CDN яндекса. пишу

результат — jQuery в коде страницы отсутствует.

что делать

идём отладчиком по коду битрикса, находим подозрительное место

исправляем CSS на JS — работает!

видимо или опечатка или плохая «копипаста». ждём обновления с фиксом.

Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?

Цитата
Александр Гусев написал:
Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?
Цитата
Александр Гусев написал:
Не понимаю смысла всей этой мишуры с D7, в чем смысл всех этих строк, когда можно написать $APPLICATION->AddHeadScript ?
Код ради кода?

Александр, интересный вопрос. Я впервые делаю сайт на битриксе, внимательно прочитал руководство и примеры. Я собственно изначально и написал AddHeadScript, но когда начал отлаживать, обнаружил что AddHeadScript отмечен в коде как deprecated с пометкой » use Asset::getInstance()->addJs» . я так подумал, что авторам битрикса наверное лучше знать что использовать, а что — уже нет, и переписал.

Цитата
Алексей Задойный написал:
Присоединяюсь к Александру. Код Д7 какой-то гигантский и лично для меня (непрограммиста, регулярно работающего с кодом, в основном чужим) это «непонятная херня».

С точки зрения программиста он гораздо лучше структурирован чем старый. Единственно что я не понимаю — это отдельного getInstance. Почему нельзя было определить у классов __callStatic и автоматом вызывать все функции на инстансе? Тогда можно было бы писать Asset::addJs(. ) и код стал бы намного чище.

Источник

Как правильно подключить jQuery

Содержание

Сжатый или несжатый jQuery

jQuery доступна для скачивания в двух вариантах:

  1. Сжатый (Compressed) jquery-3.2.1.min.js
  2. Несжатый (Uncompressed) jquery-3.2.1.js

Где 3.2.1 — это версия библиотеки.

Подключать на сайте нужно конечно сжатый вариант, т.к. он меньше размером, это экономит трафик и быстрее грузится клиентами.

Версии jQuery

На сегодняшний день существует три основные версии jQuery 1.x, 2.x, 3.x , а также урезанный вариант без аякса (ajax) и анимаций (effects) jQuery 3.x slim

Разница в версиях конечно же есть, последняя версия стала меньше размером, устаревшие функции удалены, с версии 2.x убрали и поддержку устаревших браузеров IE 6-8, сейчас jQuery поддерживает Internet Explorer 9+.

Если вы решили перейти с одной версии на другую, проблемы скорее всего возникнут, какие-то устаревшие методы придется искать в шаблоне и заменять на новые, если вы в этом понимаете, тогда все решаемо, иначе вам в помощь есть jQuery Migrate Plugin, но лучше конечно в шаблоне все переписать, что-то дополнительное подключать вообще не желательно, это все замедляет открытие страницы клиентом.

Загрузка jQuery

Скачивайте jQuery только с официального сайта, на странице скачивания будут только последние актуальные версии, в сжатом и несжатом виде, если вам нужна другая версия, тогда либо jQuery CDN, либо jQuery Core, либо Github.

Но тут у вас может возникнуть вопрос, что будет лучше:

  1. Скачивать библиотеку на сайт и подключать ее локально
  2. Не скачивать, а подключить просто ссылку на CDN-сервер

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

Во втором случае библиотека может быть уже закэширована, когда клиент первый раз откроет ваш сайт, т.е., если на каком-то другом сайте была библиотека подключена аналогичным образом с CDN, то она уже будет в кэше браузера клиента и при первом открытии сайта он чуть быстрее откроется у клиента, это также сэкономит трафик.

Но тут не все так красиво, как кажется, минусов гораздо больше и они очень важны для вашего сайта, в данном случае CDN сервер может висеть или даже не работать, в этом случае на вашем сайте все будет тормозить или даже не работать, а также удаленный CDN сервер могут взломать и заразить библиотеку, в этом случае ваш сайт может быть заражен через нее, а также все его посетители, зараза она такая, распространяется мгновенно, таким способом могут красть персональные данные ваших посетителей, их куки, делать различные редиректы на другие ресурсы при определенных условиях и т.д.

Также я наслышан о псевдо супер скорости CDN, которую еще ни на одном сайте не видел, возможно если вы за границей живете и там открываете сайт, или HDD-диск на вашем сервере уже на последнем издохе, то да, ближайшие к вам серверы отдают статику быстро, я лично в Новосибирске, и все сайты клиентов, которые приходили ко мне с включенным CDN, ужасно тормозили и открывались даже по несколько минут, вся эта скорость зависит от местоположения, про это говорят многие разработчики, не только я один, так что, в России про эту сомнительную скорость CDN забудьте, а вот про маркетинг не забывайте.

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

Подключение jQuery

Подключение jQuery требует определенных условий, это поможет вам либо разобраться с ошибками, либо избежать их:

  1. jQuery должна быть подключена на странице, в хедере или футере не важно;
  2. jQuery должна быть на странице в одном экземпляре, ни 2, ни 5 шт., только одна;
  3. jQuery должна подключаться на странице самой первой перед всеми ее плагинами, никак не после;
  4. jQuery должна подключаться и храниться локально на вашем сайте, а не на удаленном;
  5. jQuery-плагины должны быть совместимы с вашей версией jQuery, они все зависят от нее, все конфликтующие плагины нужно заменять на рабочие.

Теперь, как это выглядит на практике, обратите внимание на порядок, сначала подключается jQuery, потом все остальные плагины, а также ваши личные скрипты fn.js , которые могут использовать плагины.

А вот отдельно какие-то JS-скрипты не зависящие от jQuery где подключать не важно, может и перед jQuery, может и после, без разницы, они от нее не зависят.

Подключение jQuery в 1С Битрикс

Как подключать jQuery и плагины в старом ядре я уже писал здесь, сегодня рассмотрим как правильно подключить jQuery в новом ядре 1С Битрикс.

Итак, в идеальном мире, когда подключение скриптов контролирует разработчик сайта, а не Битрикс, header.php должен быть примерно таким, т.е. в каком порядке разработчик подключает скрипты и стили, в таком порядке они и должны выводиться.

Но в Битриксе это будет правильно работать до первого установленного модуля из Маркетплейс, в которых используются другие устаревшие методы подключения jQuery и скриптов.

Проблема именно в этих методах, как бы вы не подключали свои скрипты в шаблоне, метод CJSCore::Init() все будет выводить выше хедера и ломать работу скриптов, а также подключать сторонние и две своих встроенные библиотеки jQuery столько раз, сколько встретит на странице, т.е. хоть сколько, хоть тысячу раз.

Я сейчас проверил и даже в новом методе есть проблема, скрипт Hello asset1 будет выводиться после скриптов ядра мимо порядка в шаблоне, т.е. опять перед jQuery в моем хедере, а вот скрипт Hello asset2 отработает нормально, как я в шаблоне определил, но вручную надо задавать его порядок, что опять возня.

Вот обратите внимание

Как убрать другие jQuery

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

Подключаем jQuery правильно!

Решить проблему вывода сторонних плагинов выше jQuery из хедера можно двумя способами, замените вот эту строчку в хедере или закомментируйте

1) Либо вот на эту, также как в старой статье я делал, тоже рабочий вариант с кэшированием

2) Либо вот на эту, это из ядра Битрикса подключит jQuery

jquery — подключит jQuery 1.8.3
jquery2 — подключит jQuery 2.1.3

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

Помните, только одна jQuery должна подключаться, либо ваша в шаблоне (вариант 1), либо из ядра Битрикса (вариант 2), все jQuery из сторонних модулей нужно отключать, т.к. они могут вызываться только на одной странице.

Частые проблемы с jQuery на сайтах

1) jQuery не подключена вообще;
2) jQuery подключена раз 5-10, а должна быть подключена только 1 раз;
3) jQuery подключена после вызова jQuery-плагинов, а должна подключаться самой первой;
4) JS-ошибки на странице, после которых весь остальной JS-код и плагины не работают;
5) Версия jQuery не соответствует минимальной по требованию;
6) Подключена переписанная разработчиком jQuery, которая ведет себя не предсказуемо;
7) Подключена кастомная сборка jQuery, часть функций вырезано;

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

Источник

Читайте также:  Conan exiles не работает физика одежды
Оцените статью