Розробка кастомних блоків Tilda (Zero Block)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка кастомних блоків Tilda (Zero Block)
Середня
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка користувацьких блоків Tilda (Zero Block)

Zero Block — вбудований редактор HTML/CSS/JS у Tilda, який дозволяє створювати секції сторінок з повним контролем над розміткою та логікою. Це місток між no-code конструктором та розробкою: дизайнер або розробник верстає довільну секцію, яка вбудовується в Tilda-сторінку нарівні зі стандартними блоками.

Що таке Zero Block технічно

Кожний Zero Block — ізольований HTML-блок із inline-стилями та скриптами. Tilda обертає його у контейнер з унікальним ID та вбудовує на сторінку. Змінні дизайну сайту (шрифти, кольори) доступні через CSS-змінні, які Tilda встановлює глобально.

Обмеження ізоляції:

  • немає прямого доступу до глобального API window.Tilda з Zero Block (тільки через window.addEventListener)
  • стилі Zero Block не конфліктують з рештою сторінки (якщо написані з BEM або унікальним префіксом)
  • JS виконується у глобальному контексті сторінки — конфлікти можливі

Редактор Zero Block

Інтерфейс редактора: візуальне полотно з drag-and-drop елементів (прямокутники, тексти, зображення, кнопки) + панель стилів + вкладка «HTML/CSS/JS» для коду.

Візуальний редактор генерує стилі як inline CSS на кожному елементу. Для складної розмітки — вкладка «HTML» дозволяє написати розмітку вручну.

Адаптивні контрольні точки у Zero Block: Desktop (960px+), Tablet (640–960px), Mobile (< 640px). Для кожної контрольної точки — окремий набір позицій та розмірів елементів.

Користувацька розмітка через вкладку HTML

Для секцій, які неможливо верстати через візуальний редактор:

<!-- Zero Block HTML tab -->
<div class="zb-pricing">
  <div class="zb-pricing__header">
    <h2 class="zb-pricing__title">Виберіть тариф</h2>
    <p class="zb-pricing__subtitle">Усі тарифи включають 30 днів підтримки</p>
  </div>

  <div class="zb-pricing__grid">
    <div class="zb-pricing__card zb-pricing__card--featured">
      <div class="zb-pricing__badge">Популярний</div>
      <h3 class="zb-pricing__plan">Professional</h3>
      <div class="zb-pricing__price">
        <span class="zb-pricing__amount">990</span>
        <span class="zb-pricing__currency">₽/місяць</span>
      </div>
      <ul class="zb-pricing__features">
        <li>До 10 проектів</li>
        <li>API-доступ</li>
        <li>Пріоритетна підтримка</li>
      </ul>
      <button class="zb-pricing__cta" data-plan="professional">Почати</button>
    </div>
  </div>
</div>
/* Zero Block CSS tab */
.zb-pricing {
  max-width: 1200px;
  margin: 0 auto;
  padding: 60px 24px;
}

.zb-pricing__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 48px;
}

.zb-pricing__card {
  background: #fff;
  border: 1px solid #E5E7EB;
  border-radius: 12px;
  padding: 32px;
  transition: box-shadow 0.2s ease;
}

.zb-pricing__card:hover {
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

.zb-pricing__card--featured {
  border-color: #3B82F6;
  position: relative;
}

.zb-pricing__badge {
  position: absolute;
  top: -12px;
  left: 50%;
  transform: translateX(-50%);
  background: #3B82F6;
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 16px;
  border-radius: 100px;
}

.zb-pricing__amount {
  font-size: 48px;
  font-weight: 700;
  line-height: 1;
}

@media (max-width: 768px) {
  .zb-pricing__grid {
    grid-template-columns: 1fr;
  }
}

Інтерактивність через JavaScript

// Zero Block JS tab
(function() {
  // IIFE для ізоляції від глобального контексту

  const cards = document.querySelectorAll('.zb-pricing__cta');

  cards.forEach(btn => {
    btn.addEventListener('click', function() {
      const plan = this.dataset.plan;

      // Відкрити форму Tilda
      const formBlock = document.getElementById('rec123456789');
      if (formBlock) {
        formBlock.scrollIntoView({ behavior: 'smooth', block: 'start' });
      }

      // Заповнити приховане поле форми вибраним тарифом
      const planField = document.querySelector('input[name="plan"]');
      if (planField) planField.value = plan;

      // Аналітика
      if (window.gtag) {
        gtag('event', 'select_plan', { plan_name: plan });
      }
      if (window.ym) {
        ym(COUNTER_ID, 'reachGoal', 'PLAN_SELECTED', { plan });
      }
    });
  });
})();

Анімації у Zero Block

Анімації при скролі через Intersection Observer:

(function() {
  const cards = document.querySelectorAll('.zb-pricing__card');

  // Початковий стан
  cards.forEach(card => {
    card.style.opacity = '0';
    card.style.transform = 'translateY(24px)';
    card.style.transition = 'opacity 0.4s ease, transform 0.4s ease';
  });

  const observer = new IntersectionObserver(
    (entries) => {
      entries.forEach((entry, index) => {
        if (entry.isIntersecting) {
          setTimeout(() => {
            entry.target.style.opacity = '1';
            entry.target.style.transform = 'translateY(0)';
          }, index * 100); // staggered effect
          observer.unobserve(entry.target);
        }
      });
    },
    { threshold: 0.15 }
  );

  cards.forEach(card => observer.observe(card));
})();

Перевірка prefers-reduced-motion:

if (window.matchMedia('(prefers-reduced-motion: no-preference)').matches) {
  initAnimations();
}

Типові користувацькі блоки

Таблиця тарифів — одна з найчастіших завдань. Нестандартна візуалізація порівняння планів недосяжна стандартними блоками Tilda.

Інтерактивна карта — Leaflet.js або Google Maps Embed API у Zero Block. Маркери з масиву даних, popup з адресою:

const map = L.map('zb-map').setView([53.9, 27.56], 12);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

const offices = [
  { lat: 53.9, lng: 27.56, name: 'Головний офіс', address: 'вул. Прикладна, 1' },
];

offices.forEach(office => {
  L.marker([office.lat, office.lng])
    .addTo(map)
    .bindPopup(`<b>${office.name}</b><br>${office.address}`);
});

Лічильники з анімацією — анімований числовий лічильник при попаданні у viewport:

function animateCounter(el, target, duration = 1500) {
  const start = performance.now();
  const update = (time) => {
    const progress = Math.min((time - start) / duration, 1);
    const value = Math.round(progress * target);
    el.textContent = value.toLocaleString('uk-UA');
    if (progress < 1) requestAnimationFrame(update);
  };
  requestAnimationFrame(update);
}

Користувацька форма — з логікою кількох кроків, умовними полями, завантаженням файлів. Стандартна форма Tilda не підтримує багатокрокові сценарії.

Горизонтальний scroll-слайдер — для галерей кейсів, відгуків:

const track = document.querySelector('.zb-slider__track');
let isDown = false;
let startX, scrollLeft;

track.addEventListener('mousedown', e => {
  isDown = true;
  startX = e.pageX - track.offsetLeft;
  scrollLeft = track.scrollLeft;
});
track.addEventListener('mouseleave', () => isDown = false);
track.addEventListener('mouseup', () => isDown = false);
track.addEventListener('mousemove', e => {
  if (!isDown) return;
  const x = e.pageX - track.offsetLeft;
  track.scrollLeft = scrollLeft - (x - startX);
});

Переиспользування блоків

Zero Block неможливо зберегти як глобальний компонент в межах Tilda. Обхідні варіанти:

  • дублювання блока між сторінками (ручна синхронізація)
  • зберігання HTML/CSS/JS у репозиторію, копіювання за потреби
  • Tilda «Майстер-блок» — оновлення на всіх сторінках одночасно (функція платформи, не користувацький код)

Типові терміни

Простий Zero Block (таблиця, лічильники, користувацькі карточки без складної логіки) — 1–2 робочих дні. Інтерактивний блок (багатокрокова форма, карта з даними, слайдер з API) — 3–5 днів. Набір з 5–7 користувацьких блоків для повного сайту — 7–12 днів.