Ви відкриваєте Theme Editor, змінюєте текст у секції, а на сайті — нічого. Або блоки з'їжджають, або налаштування не застосовуються. Знайомий біль? Ми, як розробники з 8-річним досвідом у Shopify, знаємо кожну пастку. Розповімо, як правильно налаштувати Sections і Blocks, щоб команда контенту працювала без вас, а редактор тем не ламав верстку.
Online Store 2.0 дав потужний інструмент — секції з блоками. Але використовувати їх потрібно усвідомлено. Неправильна схема перетворює гнучкість на кошмар: блоки перекриваються, налаштування не зберігаються, а пресети не з'являються. Нижче — практика, яка позбавить цих проблем.
Як уникнути конфліктів блоків?
Кожен блок всередині секції повинен мати унікальний type. Якщо два блоки мають однаковий type, вони будуть поводитися як один — налаштування перезапишуться. Використовуйте різні type або обмежуйте кількість через max_blocks. Також обов'язково додавайте атрибут {{ block.shopify_attributes }} — він дозволяє Theme Editor правильно ідентифікувати кожен блок.
Чому статичні секції небезпечні?
Статичні секції жорстко прописані в layout/theme.liquid. Їх не можна перемістити або видалити з редактора — тільки через код. Це збільшує час правок у 3 рази порівняно з динамічними секціями. Для всіх нових проєктів ми рекомендуємо динамічні секції: вони керуються через JSON-шаблон сторінки, що дає повний контроль контент-менеджеру без доступу до коду.
Як влаштовані Sections
Секція — файл у /sections/ з Liquid-шаблоном і JSON-схемою в одному файлі. Схема описує налаштування секції та типи блоків, які вона приймає. Ключове поле — presets: без нього секція не з'явиться в списку «Додати секцію». Докладніше про Liquid можна почитати у Вікіпедії.
Мінімальна секція:
{%- comment -%} sections/text-banner.liquid {%- endcomment -%} <div class="text-banner text-banner--{{ section.settings.alignment }}"> <div class="container"> {% if section.settings.heading != blank %} <h2>{{ section.settings.heading }}</h2> {% endif %} {% if section.settings.text != blank %} <div class="text-banner__body">{{ section.settings.text }}</div> {% endif %} </div> </div> {% schema %} { "name": "Текстовий банер", "tag": "section", "class": "section-text-banner", "settings": [ { "type": "text", "id": "heading", "label": "Заголовок", "default": "Заголовок секції" }, { "type": "richtext", "id": "text", "label": "Текст" }, { "type": "select", "id": "alignment", "label": "Вирівнювання", "options": [ { "value": "left", "label": "По лівому краю" }, { "value": "center", "label": "По центру" }, { "value": "right", "label": "По правому краю" } ], "default": "center" } ], "presets": [ { "name": "Текстовий банер" } ] } {% endschema %} Статичні vs динамічні секції: порівняння
| Характеристика | Статична секція | Динамічна секція |
|---|---|---|
| Управління | Тільки через код | Через Theme Editor і JSON-шаблон |
| Переміщення | Неможливе | Можливе (drag-and-drop) |
| Видалення з редактора | Не можна | Можна |
| Гнучкість | Низька | Висока |
| Швидкість змін | Дні | Хвилини |
Динамічні секції виграють у 3 рази за швидкістю внесення правок. Це особливо важливо для магазинів, де контент змінюється щотижня.
Типи налаштувань (settings types)
| Тип | Використання |
|---|---|
text |
Короткий рядок |
textarea |
Багаторядковий текст |
richtext |
Текст з форматуванням (bold, italic, посилання) |
html |
Довільний HTML |
image_picker |
Вибір зображення з медіатеки |
url |
Посилання (внутрішнє або зовнішнє) |
link_list |
Меню навігації |
color |
Колір |
color_scheme |
Колірна схема (з config/settings_schema.json) |
font_picker |
Шрифт з Google Fonts |
select |
Випадний список |
radio |
Перемикач |
checkbox |
Прапорець |
range |
Слайдер з числом |
collection |
Посилання на колекцію |
product |
Посилання на товар |
blog |
Посилання на блог |
page |
Посилання на сторінку |
video |
Відео з медіатеки |
video_url |
YouTube / Vimeo URL |
number |
Число |
paragraph |
Нередагований текст-підказка в UI |
header |
Розділювач-заголовок в UI (не виводить контент) |
Blocks всередині секції
Блоки — динамічні повторювані елементи секції. Приклад — секція «Картки переваг»:
{%- comment -%} sections/features-grid.liquid {%- endcomment -%} <div class="features-grid features-grid--cols-{{ section.settings.columns }}"> {%- for block in section.blocks -%} {%- case block.type -%} {%- when 'feature_card' -%} <div class="feature-card" {{ block.shopify_attributes }}> {%- if block.settings.icon != blank -%} <img src="{{ block.settings.icon | image_url: width: 80 }}" alt="{{ block.settings.icon.alt | escape }}" width="80" height="80" loading="lazy" > {%- endif -%} <h3>{{ block.settings.title }}</h3> <p>{{ block.settings.description }}</p> </div> {%- endcase -%} {%- endfor -%} </div> {% schema %} { "name": "Сітка переваг", "tag": "section", "settings": [ { "type": "range", "id": "columns", "min": 2, "max": 4, "step": 1, "label": "Кількість колонок", "default": 3 } ], "blocks": [ { "type": "feature_card", "name": "Картка переваги", "settings": [ { "type": "image_picker", "id": "icon", "label": "Іконка" }, { "type": "text", "id": "title", "label": "Заголовок", "default": "Перевага" }, { "type": "textarea", "id": "description", "label": "Опис" } ] } ], "max_blocks": 12, "presets": [ { "name": "Сітка переваг", "blocks": [ { "type": "feature_card" }, { "type": "feature_card" }, { "type": "feature_card" } ] } ] } {% endschema %} Атрибут {{ block.shopify_attributes }} обов'язковий — він додає data-атрибути для inline-редагування в Theme Editor.
Покроковий процес створення секції
- Створіть файл
.liquidу/sections/. - Опишіть Liquid-розмітку з використанням
section.settingsіblock.settings. - Додайте
{% schema %}зname,tag,settingsі, за потреби,blocks. - Вкажіть хоча б один
preset, щоб секція з'явилася в редакторі. - Підключіть секцію в JSON-шаблон сторінки (наприклад,
templates/index.json). - Перевірте в Theme Editor: додайте секцію, налаштуйте блоки, збережіть.
Обмеження для захисту від поломки
limit у конфігурації секції або блоку запобігає додаванню зайвих елементів:
// Заборона на дублювання hero-секції { "type": "hero-banner", "limit": 1 } // Не більше 6 блоків у слайдері "max_blocks": 6 Що входить у роботу з налаштування
- Аудит поточної теми на наявність хардкоду та негнучких секцій.
- Проектування архітектури секцій під вимоги вашого магазину.
- Розробка 5–8 кастомних секцій з блоками згідно з макетами.
- Налаштування глобальних колірних схем і шрифтів.
- Інтеграція секцій у JSON-шаблони сторінок.
- Документування створених компонентів і навчання команди контенту.
- Гарантія роботи всіх блоків у Theme Editor (2 тижні підтримки після здачі).
Терміни та оцінка
Розробка 5–8 кастомних секцій з блоками для конкретного проєкту: 3–5 днів. Рефакторинг існуючої теми з перенесенням хардкоду в редаговані секції: 1–2 тижні. Якщо у вас уже є тема, але блоки працюють непередбачувано, напишіть нам — ми оцінимо проєкт за 1 день і запропонуємо план рефакторингу. Більше 50 магазинів ми перевели на Online Store 2.0 — у нас є досвід і гарантія якості. Отримайте консультацію щодо ваших завдань.







