Перейти к содержимому
Забрать бесплатно
Модификации выключены. Так эта страница выглядит на обычной Тильде.

Как нарисовать карточку в Zero Block и связать с каталогом

12 августа 2026 3 МИН КОМАНДА MODKOD

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

✓ ПРОВЕРЕНО 12 августа 2026 рантайм каталога различает опубликованные и редакторские адреса данных, получает товар по uid и собирает совместимый объект товара для корзины — t_store_loadProducts, t_store__collectProductDataByElement и endpoint getproduct в tilda-catalog-1.1.min.js

Сначала проверьте стандартные блоки

Своя карточка оправдана не потому, что Zero Block «профессиональнее». Штатный каталог уже умеет загружать товары, варианты, остатки, скидки, попап и корзину. Каждая заменённая часть становится вашей ответственностью при сдаче сайта.

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

Как устроена безопасная связка

У каждой карточки есть два слоя:

  1. Шаблон — элементы Zero Block, которыми управляет дизайнер.
  2. Данные — один объект товара в явном JSON-списке.

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

Так данные не зашиваются в визуальные элементы и тот же шаблон можно дублировать. Но JSON остаётся отдельным источником: автоматическая синхронизация с каталогом по uid в готовый MOD-180 не входит.

Почему нельзя парсить соседнюю карточку

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

  • данные могут появиться позже вашего скрипта;
  • класс внутреннего элемента меняется вместе с шаблоном Тильды;
  • фильтр или пагинация перерисовывает карточку;
  • при нескольких товарах легко скопировать данные первого во все шаблоны.

Рантайм каталога уже обращается к данным через getproductslist, getproduct и getproductsbyuid, различая опубликованную страницу и edit/preview. Но это не публичный контракт MOD-180: готовая версия принимает явный JSON рядом с шаблоном. Если нужен единый каталог по uid, интеграцию проверяют отдельно на опубликованной странице и не копируют экранный текст готового блока.

Несколько карточек на странице

Фраза «работает только один раз» почти всегда указывает на глобальный id, document.querySelector() или одно общее состояние. В рабочей схеме каждый контейнер обрабатывается отдельно:

document.querySelectorAll('[data-mk-product-card]').forEach((card, index) => {
  const product = products[index];
  const title = card.querySelector('[data-mk-role="title"]');
  const price = card.querySelector('[data-mk-role="price"]');

  // Данные из JSON записываются только в эту card.
});

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

Что оставить Тильде

Кастомный внешний вид не требует заменять магазин. Родному рантайму лучше оставить:

  • выбранные варианты товара;
  • проверку остатка;
  • добавление совместимого объекта в корзину;
  • товарный попап, если он участвует в сценарии;
  • скидки, доставку и оформление заказа.

Если мод рисует цену самостоятельно, но добавляет в корзину другой объект, посетитель увидит одно число в карточке и другое при оформлении. Поэтому MOD-180 ограничивает задачу шаблоном, явными данными и передачей покупки в родную корзину, а не создаёт параллельный магазин.

Состояния, которые надо нарисовать заранее

Дизайнеру нужны не только идеальные данные из макета. Подготовьте:

  • длинное название в две-три строки;
  • товар без изображения;
  • обычную и старую цену;
  • нулевой остаток;
  • ошибку загрузки;
  • состояние до появления данных;
  • активную и недоступную кнопку.

Если Zero Block работает в hug, после подстановки длинного названия и картинки нужен пересчёт высоты. Иначе карточка наполнится правильно, но следующий блок наедет на неё.

Проверка перед сдачей

Поставьте на одну страницу минимум три разных товара и один товар дважды. Затем проверьте публикацию и preview, изменение цены в каталоге, отсутствие фото, нулевой остаток, повторную инициализацию и добавление в родную корзину.

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

Вопросы по этой статье 4

Технически текст можно скопировать из DOM, но структура и момент отрисовки меняются. Для небольшого набора надёжнее передать структурированный JSON и явно заполнить роли шаблона; получение товара по uid требует отдельной интеграции с каталогом.