Подключение script в анонсе/детальном описании

Проблема: Вы добавляете код javascript в новость или в описание товара в 1C-Bitrix, но скрипт не отображается в теле страницы и вообще не работает. Как быть?

Быстрый ответ

Чтобы запретить Bitrix переносить конкретный скрипт, добавьте в тег script атрибут data-skip-moving="true"

Подробный текст

18.06.2025

Проблема на боевом примере:

Вы добавляете код Telegram Widget в новость или на страницу Bitrix, но скрипт не отображается или переносится в конец страницы.
Причина — встроенная оптимизация загрузки JavaScript в Bitrix, которая автоматически перемещает все скрипты перед закрывающим тегом </body>.
Это настройки главного модуля, блок "Оптимизация CSS", пункт "Переместить весь Javascript в конец страницы". Настройка тут: https://ваш_сайт/bitrix/admin/settings.php

Пример рабочего кода:

<script async src="https://telegram.org/js/telegram-widget.js?22" data-telegram-post="ваш_канал/номер_поста" data-width="100%" data-skip-moving="true"></script>

Почему это работает?

  • Bitrix при включенной оптимизации (Настройки → Главный модуль → Оптимизация) перемещает скрипты вниз страницы для ускорения загрузки.
  • Атрибут data-skip-moving="true" отключает это поведение для конкретного скрипта, оставляя его в том месте, где он был вставлен.

Дополнительные советы:

  1. Если код всё равно не работает:
    • Проверьте, не удаляет ли визуальный редактор Bitrix атрибут data-skip-moving. Попробуйте вставить код через режим «Исходный код» (кнопка <>).
    • Убедитесь, что в настройках визуального редактора разрешено использование JavaScript (Настройки → Настройки модулей → Интерфейс → Визуальный редактор).
  2. Альтернативный способ через API:
    \Bitrix\Main\Page\Asset::getInstance()->addString(
    	'<script async src="https://telegram.org/js/telegram-widget.js" data-telegram-post="ваш_канал/номер_поста" data-width="100%" data-skip-moving="true"></script>',	true
    );
  3. Проверка ошибок:
    • Откройте консоль браузера (F12 → Console) и проверьте, нет ли сообщений типа Refused to load script.
    • Если есть ошибки CSP (Content Security Policy), добавьте домен Telegram в настройки безопасности сервера.