Куда в 1С-Битрикс вставлять код виджета: три места и кеш

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

Сам виджет обычно ставится одной строкой: тег script с адресом файла. Сложность не в строке, а в том, куда её положить, чтобы она попала на нужные страницы нужного сайта и не исчезла через месяц.

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

Сначала уточните, какой у вас Битрикс

Под словом «Битрикс» скрываются два разных продукта. «1С-Битрикс: Управление сайтом» - это коробка на вашем хостинге, с папками, шаблонами и FTP. Битрикс24.Сайты - конструктор внутри портала, файлов там нет вообще.

Если у вас конструктор, вариант ровно один: поле для произвольного кода в настройках сайта или страницы. Всё, что дальше, относится к коробке.

Для коробки понадобится доступ в админку и желательно к файлам - по FTP, SSH или хотя бы через встроенный файловый менеджер в разделе «Контент».

Найдите активный шаблон, их обычно больше одного

На боевом сайте почти всегда лежит несколько шаблонов: .default, старый от прошлого подрядчика и копия с суффиксом вроде _new. Правка не в том шаблоне - причина номер два после кеша, почему код «не работает».

  • Откройте исходный код страницы и найдите путь к CSS: там будет /local/templates/имя/ или /bitrix/templates/имя/. Это и есть активный шаблон.
  • В админке: Настройки - Настройки продукта - Сайты - Список сайтов, карточка сайта, вкладка «Шаблоны сайта».
  • В публичной части включите режим правки и нажмите «Изменить шаблон сайта» - откроется нужный файл.

У шаблона может быть условие применения: маска URL, параметр запроса, тип страницы. Поэтому на главной один шаблон, а в каталоге другой. Проверьте путь к CSS минимум на трёх разных страницах: главная, карточка товара, корзина.

Место первое: footer.php шаблона

Основной способ. Файл лежит по пути /local/templates/имя_шаблона/footer.php, строка ставится перед закрывающим тегом body. Код попадёт на все страницы, включая корзину, оформление заказа и личный кабинет.

  1. Если шаблон лежит в /bitrix/templates/, сначала скопируйте его папку целиком в /local/templates/ с тем же именем.
  2. Откройте footer.php и вставьте строку скрипта перед </body>.
  3. Сохраните файл, сбросьте кеш (об этом ниже) и проверьте в режиме инкогнито.

Перед правкой сделайте копию файла с датой в имени: footer_2026-08-18.php. Это тридцать секунд, а откатывать чужую правку вслепую можно час.

Почему папку /bitrix/ трогать нельзя

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

Папка /local/ для того и придумана: Битрикс сначала ищет шаблоны, компоненты и обработчики там и только потом в ядре. Ничего из /local/ обновление не трогает.

После переноса шаблона проверьте относительные пути к картинкам и подключение стилей. Обычно всё встаёт как было, но пара путей с жёстким /bitrix/templates/ в начале может остаться в разметке.

Место второе: включаемая область

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

Обычно такая область уже есть в футере или в шапке; файл лежит в /include/ или /local/include/. Минус в охвате: область может быть привязана к разделу и просто не выводиться в других частях сайта.

Второй минус - визуальный редактор. Он умеет портить код при сохранении: переносить теги, экранировать кавычки, выкидывать атрибуты. Правьте только в режиме «Исходный код» и после сохранения перечитайте, что тег на месте целиком.

Место третье: модуль вставки кода

В Маркетплейсе есть модули с одной функцией: положить произвольный код в head или перед закрытием body. У многих готовых решений такое поле встроено в настройки шаблона и называется «Счётчики» или «Дополнительный код».

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

  • Есть доступ к файлам и понимание PHP - footer.php шаблона в /local/.
  • Доступа к файлам нет, но нужна возможность быстро отключить - включаемая область.
  • В сборке уже есть поле для счётчиков - используйте его, не плодите сущности.

Код вставлен, а виджета нет: разбираемся с кешем

Классическая ситуация: строку положили, файл сохранился, страница обновилась - пусто. В подавляющем большинстве случаев это кеш, а не ошибка в коде.

  1. Кеш компонентов: Настройки - Настройки продукта - Автокеширование, очистить файлы кеша.
  2. Композитный сайт: он отдаёт сохранённую копию HTML, и новая строка появится только после пересборки. Сбросьте его отдельно в настройках композита.
  3. Кеш на стороне сервера: nginx с проксированием, Varnish, CDN перед сайтом.
  4. Браузер: 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 прямо в шаблоне или заведите отдельный шаблон для каждого сайта. Идентификаторы смотрите в разделе Настройки - Сайты - Список сайтов. Региональные поддомены одного сайта так не разделить, там нужны настройки на стороне самого виджета.