Querra ← Все статьи
Инструкция

Поиск в Zero Block: почему штатный блок туда не ставится

16 августа 2026 · 7 минут

Вы собрали шапку в Zero Block — логотип, меню, корзина — и хотите добавить туда поле поиска. Открываете библиотеку, а блока поиска в списке элементов Zero Block нет. Это не баг и не ограничение тарифа: в Тильде это два разных мира, и соединить их штатными средствами нельзя.

Почему так устроено

Обычные блоки Тильды — это готовые куски вёрстки, которые платформа складывает в столбик друг под другом. Zero Block — противоположность: пустой холст, где вы сами расставляете элементы по координатам, а платформа пересчитывает их под разные разрешения.

Блок поиска T838 — из первой категории. Он приходит со своей вёрсткой, своими классами и своей логикой, рассчитанными на то, что он занимает полосу страницы целиком. Внутрь холста, где всё позиционируется вручную, его положить некуда — в редакторе Zero Block такого элемента просто нет.

Что есть в Zero Block — это элемент HTML (в редакторе он называется «код»). В него можно положить произвольную разметку. Именно на нём держатся все обходные пути.

Принятый обходной путь

Решение, которое кочует по сообществу Тильды, устроено так: поставить T838 на страницу как обычно, а потом скриптом перенести его в Zero Block — физически переместить узел DOM внутрь нужного элемента холста.

  1. В Zero Block добавляется элемент HTML

    Ему присваивается класс searchinput — это устоявшееся в Тильде соглашение для поля поиска в Zero Block. Пустым элемент оставлять нельзя: пустые элементы холста схлопываются.

  2. Блок T838 добавляется на страницу отдельно

    И получает служебный класс — обычно uc-zero-search, — чтобы к нему можно было обратиться из скрипта и стилей.

  3. У Zero Block включается overflow: visible

    Иначе перенесённое поле обрежется по границе холста, если выпадающая часть выходит за неё.

  4. В блок T123 кладётся скрипт переноса

    Он дожидается загрузки страницы, находит оба узла и перекладывает поиск внутрь элемента холста:

document.addEventListener("DOMContentLoaded", function () {
  var wrap  = document.querySelector('.searchinput .tn-atom');
  var block = document.querySelector('.uc-zero-search');
  wrap.append(block);
});

К этому прилагается блок CSS на два десятка правил: перенесённый T838 приносит с собой контейнеры и колонки Тильды со своими максимальными ширинами, отступами и высотами, и всё это нужно обнулять вручную — иначе поле не совпадает по высоте с соседними элементами шапки.

Где он ломается

Способ рабочий — им пользуются, и он решает задачу. Но у него есть цена, о которой узнают позже:

Последний пункт стоит держать в голове до того, как начинать. Если задача звучала как «сделать поиск в шапке», перенос блока её решает. Если она звучала как «чтобы покупатели находили товар» — не решает вообще.

Что ещё пробуют

Ссылка вместо поля. Самый простой вариант: в Zero Block рисуется лупа или кнопка, которая ведёт на отдельную страницу с блоком T838. Ничего не ломается, никаких скриптов, но покупатель уходит со страницы, где был, — и, если ничего не нашёл, возвращается уже не всегда.

Своё поле с переходом на поисковую страницу. В элементе HTML верстается <input> с обработчиком, который по Enter отправляет человека на страницу поиска с запросом в адресе. Гибче предыдущего и не зависит от классов Тильды, но требует, чтобы поисковая страница умела читать запрос из адреса, — а штатный T838 этого не делает.

Как это решается у нас

Мы столкнулись с той же задачей с другой стороны: наш виджет должен открываться из поля поиска, где бы оно ни стояло. Переносить чужие узлы DOM для этого не нужно — достаточно услышать клик.

Поэтому в Zero Block вы верстаете поле как хотите — своей вёрсткой, своими стилями, со своей иконкой — и вешаете на него атрибут:

<div data-querra-search>
  <!-- ваша вёрстка поля или иконки -->
</div>

Виджет находит его сам и открывает по клику полноэкранный поиск по каталогу. Класс searchinput — то самое соглашение из обходного пути выше — тоже распознаётся, так что если вы уже верстали поле под перенос блока, менять разметку не придётся: скрипт переноса и стили-костыли можно просто удалить.

Ни overflow, ни выравнивание высот, ни обнуление контейнеров Тильды при этом не нужны: выдача живёт в Shadow DOM поверх страницы, а ваш элемент остаётся вашим — виджет его не переставляет и не перекрашивает.

Отдельно про штатное поле: если поиск в шапке у вас всё-таки обычный блок — T838, T985 или лупа в меню ME901 — атрибут не нужен вовсе. Виджет узнаёт эти блоки по разметке и перехватывает клик сам. Разбор всех четырёх блоков — в соседней статье.

Поиск по каталогу для сайтов на Tilda

Находит с опечаткой, синонимом и в неверной раскладке, показывает карточки с ценой и наличием, даёт фильтры прямо в выдаче и аналитику запросов. Одна строка кода, 14 дней бесплатно, карта не нужна.

Посмотреть, как это работает