Куда в 1С-Битрикс вставлять код виджета: три места и кеш
Как добавить виджет на сайт на Битриксе - вопрос, у которого нет одного правильного ответа. Мест для вставки как минимум три, и они по-разному переживают обновление платформы, смену шаблона и приход нового подрядчика.
Сам виджет обычно ставится одной строкой: тег script с адресом файла. Сложность не в строке, а в том, куда её положить, чтобы она попала на нужные страницы нужного сайта и не исчезла через месяц.
Ниже - три рабочих места для кода, способ найти активный шаблон, разбор кеша (из-за него в большинстве случаев «ничего не появилось») и отдельно многосайтовость.
Сначала уточните, какой у вас Битрикс
Под словом «Битрикс» скрываются два разных продукта. «1С-Битрикс: Управление сайтом» - это коробка на вашем хостинге, с папками, шаблонами и FTP. Битрикс24.Сайты - конструктор внутри портала, файлов там нет вообще.
Если у вас конструктор, вариант ровно один: поле для произвольного кода в настройках сайта или страницы. Всё, что дальше, относится к коробке.
Для коробки понадобится доступ в админку и желательно к файлам - по FTP, SSH или хотя бы через встроенный файловый менеджер в разделе «Контент».
Найдите активный шаблон, их обычно больше одного
На боевом сайте почти всегда лежит несколько шаблонов: .default, старый от прошлого подрядчика и копия с суффиксом вроде _new. Правка не в том шаблоне - причина номер два после кеша, почему код «не работает».
- Откройте исходный код страницы и найдите путь к CSS: там будет /local/templates/имя/ или /bitrix/templates/имя/. Это и есть активный шаблон.
- В админке: Настройки - Настройки продукта - Сайты - Список сайтов, карточка сайта, вкладка «Шаблоны сайта».
- В публичной части включите режим правки и нажмите «Изменить шаблон сайта» - откроется нужный файл.
У шаблона может быть условие применения: маска URL, параметр запроса, тип страницы. Поэтому на главной один шаблон, а в каталоге другой. Проверьте путь к CSS минимум на трёх разных страницах: главная, карточка товара, корзина.
Место первое: footer.php шаблона
Основной способ. Файл лежит по пути /local/templates/имя_шаблона/footer.php, строка ставится перед закрывающим тегом body. Код попадёт на все страницы, включая корзину, оформление заказа и личный кабинет.
- Если шаблон лежит в /bitrix/templates/, сначала скопируйте его папку целиком в /local/templates/ с тем же именем.
- Откройте footer.php и вставьте строку скрипта перед </body>.
- Сохраните файл, сбросьте кеш (об этом ниже) и проверьте в режиме инкогнито.
Перед правкой сделайте копию файла с датой в имени: footer_2026-08-18.php. Это тридцать секунд, а откатывать чужую правку вслепую можно час.
Почему папку /bitrix/ трогать нельзя
Правка внутри /bitrix/ переживёт ровно до первого обновления платформы. Система обновлений перезапишет файлы своими версиями, ваша строка исчезнет молча, и связать пропажу виджета с обновлением потом будет некому.
Папка /local/ для того и придумана: Битрикс сначала ищет шаблоны, компоненты и обработчики там и только потом в ядре. Ничего из /local/ обновление не трогает.
После переноса шаблона проверьте относительные пути к картинкам и подключение стилей. Обычно всё встаёт как было, но пара путей с жёстким /bitrix/templates/ в начале может остаться в разметке.
Место второе: включаемая область
Включаемая область - это кусок HTML, который редактируется прямо из публичной части, без FTP. Подходит, когда доступа к файлам не дают или когда контент-менеджер должен уметь отключить виджет сам, без разработчика.
Обычно такая область уже есть в футере или в шапке; файл лежит в /include/ или /local/include/. Минус в охвате: область может быть привязана к разделу и просто не выводиться в других частях сайта.
Второй минус - визуальный редактор. Он умеет портить код при сохранении: переносить теги, экранировать кавычки, выкидывать атрибуты. Правьте только в режиме «Исходный код» и после сохранения перечитайте, что тег на месте целиком.
Место третье: модуль вставки кода
В Маркетплейсе есть модули с одной функцией: положить произвольный код в head или перед закрытием body. У многих готовых решений такое поле встроено в настройки шаблона и называется «Счётчики» или «Дополнительный код».
Плюс очевидный: файлы не трогаются, всё в админке, виджет выключается галочкой. Минус тоже: это ещё один модуль, который надо обновлять, и который иногда ссорится с кешированием или с другими модулями за одно и то же место в разметке.
- Есть доступ к файлам и понимание PHP - footer.php шаблона в /local/.
- Доступа к файлам нет, но нужна возможность быстро отключить - включаемая область.
- В сборке уже есть поле для счётчиков - используйте его, не плодите сущности.
Код вставлен, а виджета нет: разбираемся с кешем
Классическая ситуация: строку положили, файл сохранился, страница обновилась - пусто. В подавляющем большинстве случаев это кеш, а не ошибка в коде.
- Кеш компонентов: Настройки - Настройки продукта - Автокеширование, очистить файлы кеша.
- Композитный сайт: он отдаёт сохранённую копию HTML, и новая строка появится только после пересборки. Сбросьте его отдельно в настройках композита.
- Кеш на стороне сервера: nginx с проксированием, Varnish, CDN перед сайтом.
- Браузер: Ctrl+F5, а лучше окно инкогнито - оно исключает и кеш, и расширения.
Проверять надо в этом порядке и после каждого шага перезагружать страницу. Если после сброса композита виджет появился, значит с кодом всё было в порядке с самого начала.
Многосайтовость: одна строка на все сайты сразу
Битрикс умеет держать несколько сайтов в одной копии, и они нередко делят один шаблон. Вставили строку в футер - виджет появился и на основном сайте, и на региональном, и на том лендинге, за который вы не отвечаете.
Список сайтов смотрите в Настройки - Настройки продукта - Сайты. Если сайтов больше одного, оберните вставку условием: <?php if (SITE_ID === 's1'): ?> строка скрипта <?php endif; ?>. Идентификатор сайта видно в том же списке.
Отдельная история - региональные поддомены на одном сайте. Формально это один сайт, скрипт увидят все регионы. Если сервис виджета привязывает установку к домену, поддомены придётся добавить в список разрешённых заранее.
Проверка: виджет действительно встал
- DevTools, вкладка Network, фильтр по имени скрипта: запрос есть, статус 200.
- Консоль пустая: нет 404 и нет ошибок CORS.
- Виджет не задвоился. Это бывает, когда код «на всякий случай» положили и в шаблон, и во включаемую область.
- Мобильная версия: виджет не перекрывает кнопку «Купить» и не дерётся за угол с кнопкой чата.
- Корзина и оформление заказа: там шаблон может быть другой.
Про скорость: скрипт должен подключаться асинхронно и грузиться после основного контента. Снимите Lighthouse до вставки и после, смотрите на LCP. Если разница заметная, это повод спросить сервис, а не терпеть.
У нас установка на Битрикс описана пошагово со скриншотами админки: интеграция Viwi с Битриксом. Общая логика вставки видео на любой сайт, не только на Битрикс, разобрана в статье как добавить видео на сайт.
Частые вопросы
Можно ли поставить виджет без доступа к FTP?
Да, для этого есть два пути: включаемая область, которую редактируют прямо из публичной части, и модуль вставки кода из Маркетплейса. Оба работают только через админку. Если у вас готовая сборка, сначала загляните в настройки шаблона - поле для счётчиков там часто уже есть.
Почему код вставлен, а виджет не появился?
Три самые частые причины по убыванию: не сброшен кеш (особенно композитный сайт), правка ушла в неактивный шаблон, код испортил визуальный редактор при сохранении. Проверяйте в окне инкогнито, чтобы исключить браузерный кеш. Если в DevTools нет даже запроса к скрипту - строка просто не дошла до разметки.
Переживёт ли моя правка обновление Битрикса?
Если код лежит в /local/templates/, во включаемой области или в модуле - да, обновление его не тронет. Если вы правили файлы внутри /bitrix/ - нет, они перезапишутся при первом же апдейте. Поэтому шаблон из ядра сначала копируют в /local/ и работают уже там.
Как не показать виджет на всех сайтах, если их несколько?
Оберните строку условием по SITE_ID прямо в шаблоне или заведите отдельный шаблон для каждого сайта. Идентификаторы смотрите в разделе Настройки - Сайты - Список сайтов. Региональные поддомены одного сайта так не разделить, там нужны настройки на стороне самого виджета.