Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ скриптов Π² 1Π‘-Битрикс β€” Π·Π°Π΄Π°Ρ‡Π°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ сталкиваСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ»ΠΈ администратор сайта.hether Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Google Analytics, кастомный JavaScript-ΠΏΠ»Π°Π³ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ CSS-стилСй, Π²Π°ΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ сайта ΠΈ Π½Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ всС Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ способы ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ скриптов β€” ΠΎΡ‚ простых Π΄ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ…, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ особСнностСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Битрикс.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ 1Π‘-Битрикс Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ систСма ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ внСдрСния ΠΊΠΎΠ΄Π°: Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра. Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, Π° для Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΎΠΊ потрСбуСтся Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ структурой. ΠœΡ‹ рассмотрим ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с практичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠΌ ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ с ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ кСшСм ΠΈΠ»ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ скриптов.

1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ скриптов Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ (для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²)

Π‘Π°ΠΌΡ‹ΠΉ простой способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный HTML/JS-Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π² Π°Π΄ΠΌΠΈΠ½ΠΏΠ°Π½Π΅Π»ΠΈ 1Π‘-Битрикс. Он ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·ΠΎΠ²Ρ‹Ρ… вставок ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, счСтчиков Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² соцсСтСй. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ:

  1. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚ β†’ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° сайта ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ страницу.
  2. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ рСдактирования Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ HTML (ΠΈΠ»ΠΈ Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅).
  3. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ свой скрипт ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π³Π°ΠΌΠΈ <head> ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ </body>.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния. Код, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ страницС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ шаблона ΠΈΠ»ΠΈ сбросС кСша измСнСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΏΠ°ΡΡ‚ΡŒ. Для Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… скриптов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, jQuery ΠΈΠ»ΠΈ Google Tag Manager) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы.

πŸ“Š Какой Ρ‚ΠΈΠΏ скриптов Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ добавляСтС Π² Битрикс?
Аналитика (GA, ЯндСкс.ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠ°)
Π‘ocial media Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹
ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Ρ‹ΠΉ JavaScript
CSS-стили
Π”Ρ€ΡƒΠ³ΠΎΠ΅

2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ сайта (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ)

Для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скриптов Π½Π° всСх страницах сайта Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. Π’ 1Π‘-Битрикс Π·Π° это ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ header.php ΠΈ footer.php, располоТСнныС Π² ΠΏΠ°ΠΏΠΊΠ΅ шаблона (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ /bitrix/templates/[VAΠ¨_Π¨ΠΠ‘Π›ΠžΠ]/). Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

  1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ шаблона Π² свою Ρ‚Π΅ΠΌΡƒ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄ΠΎΡ‡Π΅Ρ€Π½ΡŽΡŽ Ρ‚Π΅ΠΌΡƒ).
  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ header.php для скриптов Π² <head> ΠΈΠ»ΠΈ footer.php для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅Π΄ </body>.
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Asset::getInstance->addJs (рСкомСндуСтся для Битрикс).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ jQuery Ρ‡Π΅Ρ€Π΅Π· Asset API:

<?php

use Bitrix\Main\Page\Asset;

Asset::getInstance->addJs('https://code.jquery.com/jquery-3.6.0.min.js');

?>

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ шаблонов всСгда создавайтС Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию! Ошибка Π² ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ"Π±Π΅Π»ΠΎΠΌΡƒ экрану" Π½Π° всём сайтС. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ скрипты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Bootstrap) ΡƒΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ядрС Битрикс β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это Ρ‡Π΅Ρ€Π΅Π· Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ β†’ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ β†’ Настройки шаблона.

β˜‘οΈ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ шаблонов

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4

3. ИспользованиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° main.include для Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ управлСния

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ скрипты динамичСски (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… страницах ΠΈΠ»ΠΈ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π³Ρ€ΡƒΠΏΠΏ), ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ main.include. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт:

  • πŸ“Œ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ скрипты для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² сайта
  • πŸ”„ Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ порядком Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²
  • πŸ›‘οΈ Π˜Π·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² с ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ кСшСм

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .php Π² ΠΏΠ°ΠΏΠΊΠ΅ /local/include/ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, custom_scripts.php).
  2. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ свой JavaScript ΠΈΠ»ΠΈ CSS-ΠΊΠΎΠ΄, ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹ΠΉ Π² PHP-Ρ‚Π΅Π³ΠΈ.
  3. Π’ Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС шаблона ΠΈΠ»ΠΈ страницы Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²:
    <?$APPLICATION->IncludeComponent(
    

    "bitrix:main.include",

    "",

    Array(

    "AREA_FILE_SHOW" =>"file",

    "PATH" =>"/local/include/custom_scripts.php"

    )

    );?>

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ скриптов Ρ‡Π΅Ρ€Π΅Π· условия. НапримСр, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Facebook Pixel Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° страницы ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ LiveChat Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ссли ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ скрипт Π΄Π²Π°ΠΆΠ΄Ρ‹?

Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ скриптов ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам Π² консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,"Uncaught Error: Bootstrap's JavaScript requires jQuery"), ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². Π’ Битрикс это часто происходит ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· шаблон ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

4. ДинамичСскоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Asset API (для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²)

Для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ самый Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΉ способ β€” использованиС встроСнного Asset API. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт:

  • πŸ”— ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ скрипты с зависимостями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сначала jQuery, ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ»Π°Π³ΠΈΠ½)
  • πŸ“¦ Π£ΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ автоматичСски
  • πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ для ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠ³ΠΎ сайта

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ кастомного скрипта с Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ jQuery:

<?php

use Bitrix\Main\Page\Asset;

Asset::getInstance->addJs('/local/js/custom-script.js');

Asset::getInstance->addJs('https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js', true);

// ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€"true" ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ скрипт Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Π΅Ρ† <body>

?>

Для CSS-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ addCss. Π’Π°ΠΆΠ½ΠΎ: Ссли Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ скрипты Ρ‡Π΅Ρ€Π΅Π· Asset API Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² происходит Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ executeComponent ΠΈΠ»ΠΈ onPrepareComponentParams, ΠΈΠ½Π°Ρ‡Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ.

πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… скриптов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ"ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ области" Π² Π°Π΄ΠΌΠΈΠ½ΠΏΠ°Π½Π΅Π»ΠΈ Битрикс (Настройки β†’ Настройки ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β†’ ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ настройки β†’ ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ области). Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° страницС ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС.

5. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· .parameters.php (для ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²)

Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ собствСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ скриптами Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» .parameters.php. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π°:

  • πŸ”§ НуТно Π΄Π°Ρ‚ΡŒ администратору Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ/ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ скрипты Ρ‡Π΅Ρ€Π΅Π· Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс
  • πŸŽ›οΈ ВрСбуСтся Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (отлоТСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры .parameters.php:

<?php

$arTemplateParameters = array(

"USE_CUSTOM_SCRIPT" => array(

"NAME" =>"ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ кастомный скрипт",

"TYPE" =>"CHECKBOX",

"DEFAULT" =>"N",

),

"SCRIPT_ASYNC" => array(

"NAME" =>"Π—Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ скрипт асинхронно",

"TYPE" =>"CHECKBOX",

"DEFAULT" =>"Y",

"PARENT" =>"USE_CUSTOM_SCRIPT",

)

);

?>

Π—Π°Ρ‚Π΅ΠΌ Π² component_epilog.php Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

<?php

if ($arParams["USE_CUSTOM_SCRIPT"] =="Y") {

$async = ($arParams["SCRIPT_ASYNC"] =="Y")?'async="async"':'';

Asset::getInstance->addString(<<<HTML

<script {$async} src="/local/js/custom.js"></script>

HTML

);

}

?>

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ измСнСния Π² .parameters.php Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ очистки кСша ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΏΠ°Π½Π΅Π»ΠΈ.

6. Π Π°Π±ΠΎΡ‚Π° со скриптами Π² ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

Если ваш сайт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Настройки β†’ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β†’ ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ сайт), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ скриптов ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Битрикс Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ всС статичныС Ρ„Π°ΠΉΠ»Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ваши скрипты ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π»ΠΈΡΡŒ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° РСшСниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°
Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ BX.addCustomEvent для динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ BX.addCustomEvent("onAjaxSuccess", function{ / ваш ΠΊΠΎΠ΄ / };
ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ скрипты Ρ‡Π΅Ρ€Π΅Π· Asset::getInstance->addJs с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Asset::getInstance->addJs(..., ['priority' => 100])
CSS Π½Π΅ примСняСтся Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ стили Ρ‡Π΅Ρ€Π΅Π· Asset::getInstance->addString с ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΎΠΉ Π² <style> Asset::getInstance->addString('<style>.class { color: red; }</style>')

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π· слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² настройках ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΈ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π° ΠΊΠ°ΠΊΠΈΠ΅ β€” Π½Π΅Ρ‚.

πŸ’‘

Π’ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ скриптов Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Π³ <script> Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² шаблонС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Asset API ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· JavaScript-events.

7. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ скриптов Π² Битрикс. Π’ΠΎΡ‚ самыС распространённыС ошибки ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • 🚫 Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ скриптов: ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° Ρ‡Π΅Ρ€Π΅Π· шаблон ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ β†’ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ β†’ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… областСй.
  • 🐒 МСдлСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°: Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ страницы. РСшСниС β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ async ΠΈΠ»ΠΈ defer, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ скрипты Π² ΠΊΠΎΠ½Ρ†Π΅ <body>.
  • πŸ”„ ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ вСрсий: НапримСр, Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии jQuery. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ BX.loadExt для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ· ядра Битрикс.
  • πŸ“± НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π»ΠΈ Π°Π΄Π±Π»ΠΎΠΊΠ΅Ρ€ ваш скрипт (особСнно Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ). ВСстируйтС Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройствах, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² эмуляторС.

Если послС добавлСния скрипта сайт пСрСстал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

  1. Π›ΠΎΠ³ΠΈ PHP (/bitrix/modules/main/include/prolog_admin_after.php)
  2. Консоль Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (F12 β†’ Console)
  3. Настройки ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ (Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ 644 для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ 755 для ΠΏΠ°ΠΏΠΎΠΊ)
πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JavaScript Π² Битрикс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅"Bitrix Debug Panel" для Chrome. Оно ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ всС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Π΅ скрипты, события ΠΈ ошибки Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Google Tag Manager Π² Битрикс?

Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Asset API Π² Ρ„Π°ΠΉΠ»Π΅ footer.php вашСго шаблона:

Asset::getInstance->addString('

<!-- Google Tag Manager -->

<script>

(function(w,d,s,l,i){w[l]=w[l]||;w[l].push({"gtm.start":

new Date.getTime,event:"gtm.js"});var f=d.getElementsByTagName(s)[0],

j=d.createElement(s),dl=l!="dataLayer"?"&l="+l:"";j.async=true;j.src=

"https://www.googletagmanager.com/gtm.js?id="+i+dl;f.parentNode.insertBefore(j,f);

})(window,document,"script","dataLayer","GTM-XXXXXX");

</script>

<!-- End Google Tag Manager -->

', true);

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ GTM-XXXXXX Π½Π° ваш ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ скрипт Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅?

Π’ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Битрикс ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ ΠΈ ΠΌΠΈΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ всС статичныС Ρ„Π°ΠΉΠ»Ρ‹. Если ваш скрипт зависит ΠΎΡ‚ динамичСски ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

BX.ready(function {

// Π’Π°Ρˆ ΠΊΠΎΠ΄ здСсь

BX.ajax.runComponentAction('namespace:component','action', {

data: { key:'value' }

}).then(function(response) {

console.log(response.data);

});

});

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ скрипт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ условиС Π² шаблонС:

<?php

if ($APPLICATION->GetCurPage(false) === SITE_DIR) {

Asset::getInstance->addJs('/local/js/mainpage-only.js');

}

?>

Или Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ main.include с настройкой видимости Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.

МоТно Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ скрипт ΠΈΠ· CDN?

Π”Π°, Π½ΠΎ рСкомСндуСтся:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Asset::getInstance->addJs с ΠΏΠΎΠ»Π½Ρ‹ΠΌ URL.
  2. Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΠ»Π»Π±Π΅ΠΊ Π½Π° случай нСдоступности CDN:
<script src="https://cdn.example.com/script.js"></script>

<script>

if (!window.YourLibrary) {

document.write('<script src="/local/js/fallback.js"><\/script>');

}

</script>

Как ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ стандартный jQuery Π² Битрикс ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ свою Π²Π΅Ρ€ΡΠΈΡŽ?

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ встроСнный jQuery ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· init.php:

<?php

$GLOBALS['APPLICATION']->SetAdditionalCSS(SITE_TEMPLATE_PATH.'/css/no-jquery.css', true);

$GLOBALS['APPLICATION']->AddHeadScript(SITE_TEMPLATE_PATH.'/js/jquery-3.6.0.min.js');

?>

Но ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Битрикс зависят ΠΎΡ‚ стандартной вСрсии jQuery 1.12.4. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Π΄ΠΌΠΈΠ½ΠΏΠ°Π½Π΅Π»ΠΈ.