Проблема на боевом примере:
Вы добавляете код 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"отключает это поведение для конкретного скрипта, оставляя его в том месте, где он был вставлен.
Дополнительные советы:
- Если код всё равно не работает:
- Проверьте, не удаляет ли визуальный редактор Bitrix атрибут
data-skip-moving. Попробуйте вставить код через режим «Исходный код» (кнопка<>). - Убедитесь, что в настройках визуального редактора разрешено использование JavaScript (Настройки → Настройки модулей → Интерфейс → Визуальный редактор).
- Проверьте, не удаляет ли визуальный редактор Bitrix атрибут
- Альтернативный способ через 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 ); - Проверка ошибок:
- Откройте консоль браузера (F12 → Console) и проверьте, нет ли сообщений типа
Refused to load script. - Если есть ошибки CSP (Content Security Policy), добавьте домен Telegram в настройки безопасности сервера.
- Откройте консоль браузера (F12 → Console) и проверьте, нет ли сообщений типа