AI генерація
Цей посібник пояснює, як розміщувати атрибути ThemeForge на HTML-елементах, щоб генератор створив WordPress тему з повноцінною адмін-панеллю.
Ви можете поділитися цією сторінкою з будь-яким AI-асистентом (ChatGPT, Claude, Gemini тощо), щоб він прочитав правила та правильно розставив атрибути.
Надішліть ШІ-помічника за цією адресою — він прочитає правила розстановки з першоджерела, ті самі, за якими генератор оцінює вашу розмітку. Спершу віддається короткий зміст, потім кожен модуль правил на запит.
Варіанти роботи
Є кілька способів використання атрибутів ThemeForge залежно від вашої відправної точки та інструментів.
1. AI генерує сайт одразу з атрибутами
Для кого: користувачі з дизайном (Figma, макет, референс)
Поділіться посиланням на цю сторінку з вашим AI-асистентом разом з дизайном. AI згенерує HTML з уже розставленими атрибутами. Ви перевіряєте звіт, просите виправлення та генеруєте WordPress тему.
- Дайте AI посилання на цей посібник + ваш дизайн (посилання Figma, скріншоти, референс)
- AI генерує HTML з усіма атрибутами за правилами
- Перевірте звіт по атрибутах — скоригуйте за потреби
- Згенеруйте WordPress тему через ThemeForge
2. AI розставляє атрибути на готовий HTML
Для кого: розробники з готовим HTML (експорт з Webflow, шаблон, ручна верстка)
У вас вже є HTML без атрибутів ThemeForge. Поділіться цим посібником з AI та попросіть проаналізувати HTML і розставити атрибути на потрібні елементи.
- Дайте AI посилання на цей посібник + ваші HTML-файли
- AI аналізує структуру та додає атрибути на тексти, зображення, посилання
- Перевірте звіт — AI не завжди знає, які елементи декоративні
- Запустіть валідацію, виправте проблеми, згенеруйте тему
3. Ручне розміщення у Webflow Designer
Для кого: досвідчені користувачі Webflow, які віддають перевагу повному контролю
Додавайте кастомні атрибути прямо у Webflow Designer (Налаштування елемента → Custom Attributes). Експортуйте сайт та запустіть валідацію перед генерацією теми.
- Виберіть елемент у Webflow → Settings → Custom Attributes
- Додайте ім'я атрибута (напр. fld-text) та значення (напр. Heading)
- Експортуйте сайт (Code Export або .webflow.io)
- Запустіть валідацію та згенеруйте тему
Повний цикл
Незалежно від методу, цикл перевірки швидкий — не потрібно імпортувати у Webflow чи ставити на WordPress лише щоб перевірити атрибути:
- Розставте атрибути (AI або вручну)
- Запустіть звіт — перегляньте дерево за секунди
- Не подобається? → скажіть AI що виправити → знову звіт
- Запустіть валідацію — перевірте помилки
- Згенеруйте WordPress тему
Ready-Made AI Prompts
Copy a prompt below and paste it into your AI assistant (ChatGPT, Claude, Gemini) along with the link to this guide. The AI will follow the attribute rules automatically.
Prompt A: Add attributes to existing HTML
Use this when you already have an HTML site and need to add ThemeForge attributes.
I have a finished HTML website that I want to convert into a WordPress theme with an editable admin panel, using ThemeForge.
Read the placement rules and follow them exactly. Start here — it names the rule modules and tells you what to do first:
https://themeforge.pro/ai
Always pull the `core` module; if you are generating the site from scratch, pull `build` too. Then add what this site needs (pages, blog, cpt, woocommerce, deploy).
Then add ThemeForge attributes to every piece of editable content in my HTML:
- Each visual section = a tab + group pair; short headings/labels = text, paragraphs and long wrapping headings = textarea, images on
tags, links as a URL + text pair.
- Repeating cards (features, team, FAQ) = a repeater with 2+ rows.
- Header, footer, navigation, logo and contacts = site-wide options.
- If my site is multilingual, mark the language switcher with wp-menu="Language" and do NOT hardcode any visible text — every label must be a field (each language has its own value).
- Keep image/file paths as they are; do not skip any visible text.
[Add your specific requirements here: which pages, WooCommerce / blog support, languages, etc.]
When done, follow the Final Delivery steps: create the theme-options page with ALL option fields, serve the files locally, and give me the complete list of page URLs to paste into ThemeForge.
Prompt B: Generate HTML with attributes from scratch
Use this when you want the AI to create an HTML site from a design (Figma, screenshot, description) with ThemeForge attributes already included.
I need you to generate an HTML website with ThemeForge attributes already in place, ready for WordPress theme generation.
Read the placement rules and follow them exactly. Start here — it names the rule modules and tells you what to do first:
https://themeforge.pro/ai
Always pull the `core` module; if you are generating the site from scratch, pull `build` too. Then add what this site needs (pages, blog, cpt, woocommerce, deploy).
Here is my design: [ATTACH YOUR FIGMA LINK / SCREENSHOTS / DESCRIPTION]
Generate clean, semantic HTML + CSS and place ThemeForge attributes on all editable content as you build each section (not as a separate pass):
- Each section = a tab + group pair; text vs textarea by line count; images on
; links as a URL + text pair; repeating cards as a repeater with 2+ rows.
- Header/footer/navigation/contacts = site-wide options.
- For a multilingual site, mark the language switcher with wp-menu="Language" and keep every visible string as a field (no hardcoded text).
Use real placeholder content (not lorem ipsum) so data import populates real fields.
[Add your specific requirements here: colors, fonts, number of pages, WooCommerce / blog, languages, etc.]
When done, follow the Final Delivery steps: create the theme-options page with ALL option fields, serve the files locally, and give me the complete list of page URLs to paste into ThemeForge.
Tips for Better Results
- Для Промту Б: додайте якомога більше візуального контексту — скріншоти, посилання на Figma, референсні сайти. Чим більше контексту, тим кращий результат.
- Можна доповнити промти власними вимогами: колірна схема, шрифти, конкретні секції, кількість сторінок, підтримка WooCommerce тощо.
- Після завершення попросіть ШІ розгорнути сайт у локальній папці та запустити сервер — потім вставте локальну URL-адресу в ThemeForge для генерації WordPress-теми.
- Посилання на гайд вже включено в промт. ШІ прочитає повні правила розставлення атрибутів прямо зі сторінки.
- Багатомовний сайт? Розмічайте контент як зазвичай — одне ім’я поля зберігає всі мови; підключіть перемикач через wp-menu=«Language». Див. розділ «Багатомовні сайти».
- Давайте кожному полю УНІКАЛЬНЕ ім’я в його scope — ніколи не перевикористовуйте ім’я секції для репітера всередині неї, інакше посилання та його зображення не виживуть разом.
Префікси атрибутів
| Prefix | Scope | Description |
|---|---|---|
fld-* | Per-page | Поля сторінки — контент унікальний для ОДНІЄЇ сторінки (заголовок hero, зображення) |
opt-* | Site-wide | Глобальні налаштування — контент спільний для ВСІХ сторінок (телефон, email, логотип) |
tax-* | Taxonomy | Поля таксономій — контент на сторінках категорій/тегів |
wp="..." | WP Core | Ядро WordPress — динамічні дані WP (заголовок запису, дата, зображення) |
wp-fields-group="..." | Sections | Групування секцій — об'єднує поля в секції адмін-панелі (метабокси) |
Типи полів
| Attribute | Field | HTML Element | Example |
|---|---|---|---|
fld-text | Text | <h1>-<h6>, <p>, <div> | <h2 fld-text="Heading"> |
fld-area | Textarea | <p>, <div> | <p fld-area="Description"> |
fld-image | Image | <img> only | <img fld-image="Photo"> |
fld-bg-image | BG Image | Any element | <div fld-bg-image="BG"> |
fld-link | Link | <a> only | <a fld-link="Button"> |
fld-editor | Rich editor | <div> | <div fld-editor="Content"> |
fld-loop | Repeater | Wrapper <div> | <div fld-loop="Items"> |
fld-group | Group | Container | <div fld-group="Hero"> |
fld-layouts | Section builder | Wrapper <div> | <div fld-layouts="Page Sections"> |
fld-layout | Section type | Direct child | <section fld-layout="Hero"> |
layout-preview | Preview control | On fld-layout | layout-preview="off" |
fld-tab | Tab | Empty <div> | <div fld-tab="Hero" wp="delete-element"> |
fld-show | Toggle (show) | Wrapper <div> | <div fld-show="Show CTA"> |
fld-hide | Toggle (hide) | Wrapper <div> | <div fld-hide="Hide CTA"> |
fld-gallery | Gallery | Wrapper <div> | <div fld-gallery="Photos"> |
Replace fld- with opt- for site-wide options. Full reference: Довідник атрибутів
Правила розміщення
Секції та вкладки
fld-tab має бути на окремому порожньому <div>, НЕ на тому ж елементі що fld-group. Розміщуйте його як сусідній елемент ПЕРЕД групою.
<!-- ONE wp-fields-group per page on <body> -->
<body wp-fields-group="Home Page">
<!-- Tab = empty sibling BEFORE the group -->
<div fld-tab="Hero" wp="delete-element" class="tab-div"></div>
<section fld-group="Hero" class="hero">
<h1 fld-text="Heading">Welcome</h1>
<p fld-area="Description">...</p>
</section>
<div fld-tab="Features" wp="delete-element" class="tab-div"></div>
<section fld-group="Features" class="features">
...
</section>
</body>
Посилання — завжди пара
Кожне посилання ПОВИННО мати і атрибут посилання, і атрибут тексту, під ДВОМА іменами — fld-link="X" на <a>, fld-text="X text" на дочірньому <div>. Одне імʼя на обидва — одне поле живить і адресу, і підпис. Телефон/email: лише opt-phone-link / opt-email-link — один атрибут заповнює і href, і видимий текст. Виняток: посилання-іконки та декоративні посилання без видимого тексту.
<!-- CORRECT: fld-link on <a>, fld-text on child, two names -->
<a fld-link="CTA" href="/shop" class="btn w-inline-block">
<div fld-text="CTA text">Shop Now</div>
</a>
<!-- Phone/email: one attribute fills both href and text -->
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
Зображення
fld-image ставиться ТІЛЬКИ на <img> теги. fld-bg-image — на будь-який елемент з фоновим зображенням.
<img fld-image="Hero Image" src="images/hero.jpg" alt="Hero" />
<div fld-bg-image="Background" style="background-image:url('img/bg.jpg')"></div>
Репітери (повторювані блоки)
ВСІ дочірні елементи всередині fld-loop ПОВИННІ мати ОДНАКОВІ атрибути ThemeForge. Використовуйте різний текст та зображення в кожному рядку.
<div fld-loop="Team" class="team-grid">
<div class="card">
<img fld-image="Photo" src="images/avatar-1.jpg" />
<h3 fld-text="Name">John Doe</h3>
</div>
<!-- Row 2: SAME attributes, DIFFERENT content -->
<div class="card">
<img fld-image="Photo" src="images/avatar-2.jpg" />
<h3 fld-text="Name">Jane Smith</h3>
</div>
</div>
Глобальні налаштування сайту
Елементи на кожній сторінці (телефон, email, логотип, адреса) повинні використовувати opt-* замість fld-*.
<!-- Header: site-wide, use opt-* -->
<img opt-image="Logo" src="images/logo.png" />
<!-- Navigation: a repeater of link + caption rows (NOT wp-menu) -->
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
…
</nav>
<!-- Footer: contacts — one attribute each -->
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
<a opt-email-link="Email" href="mailto:...">info@site.com</a>
<p opt-text="Address">123 Main St</p>
Меню
<!-- Navigation: an opt-loop of link + caption rows (preferred) -->
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/" class="nav-link w-inline-block">
<div opt-text="Link text">Home</div>
</a>
</div>
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
</nav>
<!-- Language switcher (Polylang): use wp-menu -->
<div wp-menu="Language" class="lang-switcher">
<a href="/en" class="lang-link">EN</a>
<a href="/ua" class="lang-link">UA</a>
</div>
Імена — кожне ім’я унікальне
У межах одного scope кожне ім’я поля має бути унікальним. ThemeForge ключує поля за іменем, тож два різні поля з однаковим іменем конфліктують — одне мовчки втрачається.
- НІКОЛИ не давайте репітеру (fld-loop) те саме ім’я, що й секції або групі, всередині якої він є — називайте репітер за його рядками (напр. «Картки лічильників»), а не як секцію («Лічильники»).
- Посилання та його зображення чи текст поруч мають мати РІЗНІ імена — напр. opt-link=«Посилання логотипа» + opt-image=«Логотип», а не обидва «Логотип».
- Однакове ім’я — лише навмисно (рядки репітера, перемикачі show/hide). Конвертер повідомляє про випадкові конфлікти імен у вкладці «Логи» проєкту.
<!-- WRONG: repeater reuses its section/group name -->
<section fld-group="Counters">
<div fld-loop="Counters"> ... </div>
</section>
<!-- RIGHT: distinct names -->
<section fld-group="Counters">
<div fld-loop="Counter cards"> ... </div>
</section>
Багатомовні сайти (Polylang / WPML)
Якщо джерело має дві чи більше мов (перемикач, коди локалей на кшталт ua/ru/en або сторінки, продубльовані за мовами) — сайт багатомовний. ThemeForge сам визначає Polylang або WPML — розмітка однакова. Від одномовного сайту відрізняються лише дві речі:
- Перемикач мови використовує wp-menu=«Language» — мовний плагін сам підставляє посилання локалей.
- Кожне контентне поле зберігає значення НА КОЖНУ мову. Використовуйте ОДНЕ ім’я поля (напр. fld-text=«Заголовок») — НЕ створюйте «Заголовок EN» / «Заголовок RU». Власник редагує кожну мову в адмінці, а імпортер заповнює всі локалі.
Перемикач мови — рецепт
<!-- Dropdown: toggle shows the CURRENT language (an options field),
the list is a connected wp-menu="Language" (locales injected) -->
<div opt-hide="Hide language switcher" class="lang-drop w-dropdown">
<div class="lang-dt w-dropdown-toggle">
<div opt-text="Current language">UA</div>
</div>
<nav class="lang-drop-list w-dropdown-list">
<div wp-menu="Language" class="lang-switcher">
<a href="/en"><div>ENG</div></a>
<a href="/ru"><div>РУС</div></a>
</div>
</nav>
</div>
<!-- Simple variant: a flat list of language links -->
<ul wp-menu="Language" class="header__languages">
<li><a href="/">UA</a></li>
<li><a href="/ru/">RU</a></li>
<li><a href="/en/">EN</a></li>
</ul>
Глобальні поля opt-* (телефон, адреса, підписи навігації) теж зберігаються за мовами, тож шапка/підвал кожної локалі можуть відрізнятися. Розмічайте їх opt-* як зазвичай — без додаткової роботи.
На багатомовному сайті НЕ:
- хардкодьте видимий текст — він стане неперекладним; усе стає полем;
- створюйте по одному полю на мову — одне ім’я, CMS зберігає його за локалями;
- розмічайте посилання всередині wp-menu=«Language» — плагін замінює їх власними посиланнями локалей.
Підказка з детекту: перемикач мови в шапці/підвалі (прапори або коди ua/ru/en) чи префікси URL /ru/… та /en/… означають, що сайт багатомовний — підключіть перемикач через wp-menu=«Language» й очікуйте контент за локалями. Одномовному сайту це не потрібно.
Що НЕ потрібно маркувати
- Декоративні елементи: роздільники, спейсери, оверлеї, SVG-іконки
- Структурні обгортки: grid-контейнери, flex-обгортки, каркас верстки
- Посилання навігації всередині wp-menu (WordPress керує ними)
- Статичні UI-підписи: «Ціна:», «Кількість:», заголовки таблиць
- UI-іконки: пошук, кошик, шеврони, стрілки
- Стандартний текст футера: «Усі права захищено», рік копірайту
Правило: якщо власник сайту захоче змінити цей текст/зображення з адмінки — ставте атрибут. Якщо це UI-хром — пропускайте.
Чекліст
- Кожна секція wp-fields-group має унікальну, зрозумілу назву
- Усі дочірні елементи репітера мають однакові атрибути з різним контентом
- Зображення використовують теги <img> де можливо
- Кожне посилання має ОБИДВА атрибути: посилання + тексту (fld-link + fld-text, opt-phone-link + opt-text тощо)
- Контакти у футері використовують opt-* (опції), не fld-*
- Вкладки — порожні сиблінги з wp="delete-element"
- Немає атрибутів на декоративних/структурних елементах
- Назви полів — зрозумілі, англійською
Required Pages & Slugs
The file name (slug) determines which WordPress template is generated. Some pages are required, others depend on the site type (blog, shop).
theme-options.html — REQUIRED
You MUST create this page. It contains ALL opt-* fields used across the site (logo, navigation, phone, email, address, social links, copyright). Add wp-fields-group="Theme Options" on <body> and organize fields with opt-tab. Without this page, option fields will NOT appear in the WordPress admin panel.
<!-- theme-options.html -->
<body wp-fields-group="Theme Options">
<div opt-tab="Header" wp="delete-element" class="tab-div"></div>
<img opt-image="Logo" src="images/logo.png" />
<nav opt-loop="Nav links" class="nav">
<div class="nav-item">
<a opt-link="Link" href="/about" class="nav-link w-inline-block">
<div opt-text="Link text">About</div>
</a>
</div>
<div class="nav-item">
<a opt-link="Link" href="/contacts" class="nav-link w-inline-block">
<div opt-text="Link text">Contacts</div>
</a>
</div>
</nav>
<div opt-tab="Footer" wp="delete-element" class="tab-div"></div>
<a opt-phone-link="Phone" href="tel:...">+1 234 567</a>
<a opt-email-link="Email" href="mailto:...">info@site.com</a>
<p opt-text="Address">123 Main St</p>
<div opt-text="Copyright">© Company</div>
</body>
Slug → Template Mapping
Use these exact file names. Custom pages (about, services, contacts, etc.) can use any slug that doesn't conflict with the reserved names below.
| File name | WP template | When to use |
|---|---|---|
index.html | index.php | Home page (required) |
about.html | about.php | Custom page — any slug |
single.html | single.php | Single blog post (blog sites) |
archive.html | archive.php | Blog posts list (blog sites) |
404.html | 404.php | Not found page |
search-page.html | search.php | Search results |
single-product.html | single-product.php | Single product (WooCommerce) |
archive-product.html | archive-product.php | Product catalog (WooCommerce) |
taxonomy-product-cat.html | taxonomy-product-cat.php | Product category archive (WooCommerce) |
page-cart.html | page-cart.php | Cart (WooCommerce) |
page-checkout.html | page-checkout.php | Checkout (WooCommerce) |
page-wishlist.html | page-wishlist.php | Wishlist (WooCommerce) |
page-my-account.html | page-my-account.php | My account (WooCommerce) |
single-{type}.html | single-{type}.php | Custom post type — single / archive |
theme-options.html | — | Site-wide options (admin panel only, no template) |
Final Delivery — Do NOT Skip
After generating all pages with attributes, you MUST complete these steps:
- Create theme-options.html with ALL opt-* fields (see above)
- Save all HTML files to a single folder. Tell the user the folder name
- Give the user the complete list of ALL page slugs (filenames without .html), ready to paste into the ThemeForge generator page list:
- У ThemeForge створіть проєкт, поставте галочку «Джерело буде завантажено на сайті», вставте список сторінок і завантажте бланкову тему. Встановіть її у WordPress, завантажте ZIP-архів сайту в розділі «ThemeForge → Джерело» (окремий пункт меню адмінки) і натисніть «Оновити тему з проєкту».
index, about, services, contacts, theme-options
tf-cors.php
Необовʼязково: якщо сайт уже віддається за localhost-адресою, можна вказати в проєкті цю адресу замість завантаження архіву на сайті (див. «Вихідний код на вашому сайті»). Створіть цей файл у корені сайту та запустіть сервер командою: php -S localhost:8080 tf-cors.php. Дозволено лише themeforge.pro — жоден інший сайт не отримає доступу до ваших файлів.
<?php
// ThemeForge CORS Router — place in site root, run: php -S localhost:8080 tf-cors.php
$allowed = ['https://themeforge.pro', 'https://www.themeforge.pro', 'http://localhost:8081'];
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
if (in_array($origin, $allowed, true)) header('Access-Control-Allow-Origin: ' . $origin);
elseif (empty($origin)) header('Access-Control-Allow-Origin: https://themeforge.pro');
header('Access-Control-Allow-Methods: GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$file = __DIR__ . $path;
if (is_dir($file)) $file = rtrim($file, '/') . '/index.html';
if (!is_file($file) && is_file($file . '.html')) $file .= '.html';
if (is_file($file)) {
$ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
$types = ['html'=>'text/html','css'=>'text/css','js'=>'application/javascript','json'=>'application/json',
'png'=>'image/png','jpg'=>'image/jpeg','jpeg'=>'image/jpeg','gif'=>'image/gif','svg'=>'image/svg+xml',
'webp'=>'image/webp','ico'=>'image/x-icon','woff'=>'font/woff','woff2'=>'font/woff2','ttf'=>'font/ttf'];
if (isset($types[$ext])) header('Content-Type: ' . $types[$ext]);
readfile($file); return true;
}
http_response_code(404); echo '404 Not Found';
Шпаргалка
PAGE: <body wp-fields-group="Page Name"> (ONE per page)
TAB: <div fld-tab="Section" wp="delete-element" class="tab-div"></div>
GROUP: <section fld-group="Section"> (ALWAYS after each tab)
TEXT: <h2 fld-text="Heading">...</h2>
TEXTAREA: <p fld-area="Description">...</p>
IMAGE: <img fld-image="Photo" src="..." />
BG IMAGE: <div fld-bg-image="BG" style="background-image:url(...)">
LINK+TEXT: <a fld-link="Btn"><div fld-text="Btn text">Click</div></a>
REPEATER: <div fld-loop="Items"> (all children = same attrs)
BUILDER: <div fld-layouts="Page Sections"><section fld-layout="Hero">
(client picks section types; previews are automatic)
optional: layout-preview="off" | layout-preview="images/x.jpg"
TOGGLE: <div fld-show="Show X"> or <div fld-hide="Hide X">
NAV LINKS: <nav opt-loop="Nav links"><div><a opt-link="Link"><div opt-text="Link text">...</div></a></div>…</nav>
OPTIONS: opt-text, opt-image, opt-link, opt-phone-link, opt-email-link
LANG SWITCH: <div wp-menu="Language"> (Polylang only)
POST LOOP: <div wp-query="'post_type'=>'post','posts_per_page'=>3">
PRODUCTS: <div wp-product-query="'post_type'=>'product','posts_per_page'=>4">
CONDITION: <div wp-if="on_sale">
Перевірка розмітки
Перш ніж віддавати сайт, надішліть усі його сторінки на безкоштовну перевірку. Вона запускає справжній парсер генератора — без акаунта, нічого не зберігається — і перелічує, до чого причепиться генератор: error ламає тему, warning — щось мовчки випадає, hint — варто знати. Повторюйте, доки відповідь не скаже "ok": true.
POST /api/validate-markup
Надсилайте весь набір одним запитом: частина перевірок стосується набору, а не одного файлу — чи є theme-options.html, чи є головна.
POST https://themeforge.pro/api/validate-markup
Content-Type: application/json
{"pages":[
{"name":"index.html","html":"<!doctype html>…"},
{"name":"about.html","html":"…"},
{"name":"theme-options.html","html":"…"}
]}
Просунуте — ШІ-агент + Webflow MCP
Два промти вище працюють з будь-яким ШІ на готовій HTML-сторінці. Якщо ви збираєте у Webflow, ті самі атрибути можна розставити прямо в Designer ШІ-агентом (напр. Claude Code) з підключеним Webflow MCP — ті самі правила, без копіпасту.
- Один канон: правила розміщення на цій сторінці — єдине джерело істини для обох маршрутів.
- У будь-якому разі результат — набір розмічених сторінок, який ви передаєте генератору ThemeForge (опублікований URL *.webflow.io або локальна папка HTML).