Transfer a finished site into a Vizen shop
/docs/transferdraftМашинный перевод с английского· проверено 2026-09-12
Статус: draft · Служить: GET /docs/transfer · проверенный: 2026-09-12, API и чеков на витрине · владелец: гладиатр API документация
Статический автономный site папка
Для целого multi-page Сайт, размещенный под одним category (type:site), использовать /site-folders/{id} вместо того, чтобы вставлять HTML widget за page. Видишь? /docs/file-storage для upload/release операции, вложенные URL, права и React статические-export маршрутизация. HTML pages обслуживаются в site Папка, одинокая-index Ограничения ниже применяются к встроенным widgets, не самостоятельный site папки; site папки не являются inherit shop chrome.
1.Что вы можете сделать здесь
А. site уже существующий - это HTML/CSS/JS папка, статическая React/Vite export, Figma, Webflow или Tilda export — входит в shop Как есть. Одна папка за page становится одним из level-3 widget; Одна папка становится site скелет (The Skone) layout); header и footer папки становятся chrome widgets; product и category папки становятся шаблонами. Ничто не разрезается на sections, нет path переписывается, Ничто не завернуто в тень DOM Или iframe. Что добавляет платформа, так это page вокруг тебя file (header, footer, тот site's own таблица стилей) и live data §7 говорит, что именно происходит с file; §8 Что такое cannot путешествие.
Каждый шаг ниже plain HTTP: POST /html-documents Для создания document, затем POST /html-documents/{id}/releases/zip?publish=1 с застегнутой папкой, И это весь механизм. Если у вас есть хранилище платформы, backend-3D/tools/html-transfer/transfer.mjs Делает те же звонки в одном Командование — это удобство, а не path.
2. Решать first (вилки)
| Если ты хочешь | Возьми это path | Стоимость |
|---|---|---|
| а site который уже существует в браузере, чтобы стать shop's pages | передача — это document, мастерство vizen-transfer | data Это shop собственник (menu, цены, cart, forms) перезаписывается, не копируется |
| целое multi-page site Держите отдельно, байт за байтом | а site папка (top из этого page, /docs/file-storage): category type:"site", один ZIP | нет shop header, cart, сеанс или vz- ключи внутри; а dev key оставляет draft без preview |
| Неизвестно, кто из двух | Спроси owner Один вопрос: не выбирай для них и не сокращай site в состав компонентов | — |
| а page Которого пока не существует | строить — vizen-start и три его вопроса | не это document |
| один page внутри shop's существующий | одна папка, --page <slug>; тот shop's header и footer оставаться | none |
| Вся эта site: твой header, footer, шрифты, product pages | layout папка + два chrome groups + Шаблоны + N page в папках, в order §4 | тот order вопросы: chrome after pages означает рестайлинг дважды |
| статический content (text, images, Цены, введённые в) | копировать как есть | Цены напечатаны в момент изменения каталога |
| live content (menu, product списки, цены, cart, forms) | перезакрепить на shop's data с vz- ключей, или keep платформа widget | тот feed в own Разметка ≤ 48 rows без фильтров или paging; Фильтры означают платформу productListing |
| твой own header | ан html widget в chrome group; menu и cart отсчет от vz-for menu и vz-cart-count | В охраняемых зонах он отображает без своих сценариев |
| Платформа header рестайлинговый | siteHeader с props.wrapperClass — vizen-chrome §4а | тот look ограничена его props |
| Итерационные, пока site Собирается | а dev key: а draft в <slug>--dev.<zone> под owner's сессия | тот owner Публикует; ничего не видно покупателям |
| Финал publish | а prod key, или owner's publish из draft | Каждый выпуск в a prod key это live сразу — один shop Провел 16 header Выпущено 16 live редактировать |
3. Объекты и где они находятся live
Все, что вы загружаете, является освобождение из одного document; Все, что вы делаете, является связывающий.
| Объект | создавать | Читать | Писать path | ||||||
|---|---|---|---|---|---|---|---|---|---|
| html document (Проект) | POST /html-documents {"item":{"name":"…","level":3}} → result.id | GET /html-documents/{id} → source.url = тот active освобождение's index.html, уже очищенный | name и description только; content Пройти через релизы (HTML_PROJECT_USE_RELEASE иначе) | ||||||
| освобождение (a) snapshot из папки) | `POST /html-documents/{id}/releases {"base":"active"\ | "none","files":[{"path","sha256","size"}],"delete":[],"note":"…"} → {release_id, upload[], reused[], inherited[]} → PUT каждый upload[].upload_url (нет Authorization) → POST …/releases/{rid}/publish → {url, path, embed_prefix, seo, report}` | GET …/releases, GET …/releases/{rid} (Каждый из них несет preview_base) | 422 RELEASE_INVALID перевозить report.errors; 409 FILES_PENDING Список того, что не загружается; POST …/rollback перемещает указатель | |||||
| освобождение от а ZIP | POST /html-documents/{id}/releases/zip?publish=1, многочленный file — тот document должно быть уже существует; Ничего не смонтировано | то же самое | ≤ 60 MB по запросу | ||||||
| html block (тот widget на поверхности) | POST /content-blocks {"item":{"name":"…","sections":[{"type":"text","payload":{"v":2,"kind":"html","props":{"html":{"html_document_id":<doc>,"level":3}}}}]}} | GET /content-blocks | PUT /content-blocks/{id} {"item":{…}} является частичным обновлением; не-empty item.sections Заменять собой section список. props.html.boxed: true Запросить платформенный ящик | ||||||
| page | POST /categories {"item":{"name":"…","type":"page","is_published":true,"seo":{"slug":"…"}}}; тот slug должен быть free (GET /categories/by-slug/{slug}?company_id=… → 404) | GET /categories/by-slug/{slug}?company_id=… → content_blocks[] | PUT /categories/{id}/content-blocks {"id":<page>,"items":[{"block_id","sort_order"}]} — заменить-set | ||||||
| group (Заказной список widgets) | `POST /content-blocks {"item":{"name":"…","group_type":"chrome"\ | "product"\ | "category","sections":[{"type":"text","payload":{"v":2,"kind":"group","props":{"widgets":[<block ids>]}}}]}}` | GET /content-blocks | PUT /content-blocks/{id} | ||||
| обязательный (который) group, где) | `PUT /design/bindings/{shop\ | category\ | category_children\ | product\ | article\ | theme\ | system}/{id} {"slots":{"header":<G>,"footer":<G>,"body":<G>}} — shop брать id 0; slots` является заменой-set | GET /design/bindings/{type}/{id} → resolved с помощью source каждого slot; GET /v1/storefronts/resolve?slug=… → chrome | {"slots":{}} несвязанный |
| layout (site скелет и общий files) | существует: GET /content-blocks, rows с group_type:"theme", Самый ранний из них – shop's default | GET /themes/{id}/site → base, scope_class, files[], icons_generated[] | transfer.mjs ./theme --theme <id>, или POST /themes/{id}/site/releases → PUT → …/publish; --theme и --page never вместе | ||||||
| page SEO | взятый из <title> и <meta name="description"> на publish | GET /categories/by-slug/… → seo | transfer.mjs пишет seo.meta_title / seo.meta_description когда empty (--seo-overwrite заменять; вручную: PUT /categories/{id} {"item":{"seo":{…}}} |
Сфера охвата: catalog:read, catalog:write, storage:write; тот role на shop должен быть owner или admin для level 3 (HTML_SCRIPT_ROLE_REQUIRED В противном случае. Флаг сервера для авторизованной разметки включен production.
4.Рецепты - в order Реальный трансфер
Каждый рецепт заканчивается чеком, который это доказывает. "200" здесь ничего не доказывает..
4.1 Инвентаризация
Напишите один стол before тот first звонить:
| Источник | Цель | Данные для переобвязки | Не является move |
|---|---|---|---|
index.html (дом) | page widget, --page home | product полоскать → vz-for="p in products" или productListing | — |
partials/header.html | chrome group, slot header | menu → vz-for="m in menu", cart → vz-cart-count | — |
css/, fonts/, favicon | layout папка, --theme | — | — |
product.html (макет) | product group, slot body | {{ product.* }}, vz-add-to-cart | own приманка /api/products |
app.jsx роутер, государство | — | — | SPA время выполнения: export маршруты статически first |
4.2. key
GET /v1/account/token. contour: "dev" и writes_to_live: false — повторять свободно. contour: "prod" — каждый publish это live: Скажи так: owner Спроси для dev key before тот first освобождение. store.storefront_url Это address Вы откроете; warnings[] Иди к нему. owner стенографический.
4.3 Раскладная папка — site-широкий CSS, шрифты, favicon, сценарий
curl -s -H "Authorization: Bearer $VZ" $API/content-blocks \
| jq '[.result[] | select(.group_type=="theme") | {id,name}] | sort_by(.id)' # earliest = default
node backend-3D/tools/html-transfer/transfer.mjs ./theme --theme <id>index.html Вот это скелет: <head> nodes Земля в head каждого page, тот <body> class на page корень, body content before </body>; *.css голый html/body/:root сфера применения .vz-theme-{doc}; icon.png генерирует favicon set. Сценарии читать window.VZ_THEME_BASE. Полная папка правила: /docs/own-markup §7.2.
Проверить: GET /themes/<id>/site ответы base и scope_class; Открыть любой page И найти class="… vz-theme-{doc}" на page Корень и ваш стиль в <head>.
4.4 Заголовок и footer
node backend-3D/tools/html-transfer/transfer.mjs ./header --name "Header" # prints: создан HTML-проект #<doc>
node backend-3D/tools/html-transfer/transfer.mjs ./footer --name "Footer"Без --page Командование создает document и публикует релиз; После этого три звонка на одну часть: html block (§3), то group (group_type:"chrome", props.widgets:[<block>]), связывающий:
curl -s -X PUT -H "Authorization: Bearer $VZ" -H 'Content-Type: application/json' \
$API/design/bindings/shop/0 -d '{"slots":{"header":<G_header>,"footer":<G_footer>}}'
# one section only: /design/bindings/category/<id>; one layout: /design/bindings/theme/<id>А. sticky header может использовать vz-sticky на корневой узел и сохраняет свое место в поток. position: fixed и absolute Также доступны для намеренного Оверлей; проверьте содержащее block, укладка и content перекрытие.
⚠️ Охраняемые зоны полоса more чем сценарии. Над /cart, /checkout, /account И другой охраняемый pages тот widget Подается в статической mode: тот <script> nodes Иди, и родственник <link rel="stylesheet" href="header.css"> И они идут с ними — header непривлекательные (измеренные на стенде), 2026-09-12). Вводная линия <style> Выжить, и в layout папка's таблица стилей Связанный в page <head> Везде охраняемые зоны, включая и охраняемые. header's CSS в layout папка (§4.3) или вставить ее в <style>; keep тот <link> form для pages только.
Проверить: GET /v1/storefronts/resolve?slug=<shop> → chrome Назовите свои имена Документы; Откройте дом page, а product page и /cart — тот header это Там, на всех трех, на /cart Без своих сценариев и до сих пор стилизован.
4.5 Страницы
curl -s -H "Authorization: Bearer $VZ" "$API/categories/by-slug/home?company_id=<N>" # 404 = free
curl -s -X POST -H "Authorization: Bearer $VZ" -H 'Content-Type: application/json' $API/categories \
-d '{"item":{"name":"Home","type":"page","is_published":true,"seo":{"slug":"home"}}}'
node backend-3D/tools/html-transfer/transfer.mjs ./home --page home --validate-only
node backend-3D/tools/html-transfer/transfer.mjs ./home --page homeThe first Бег создает document и навесить на block after успешный publish; валидатор error оставляет page Нетронутый. Перезапуск - это new освобождение И только в этом случае files чей sha256 изменился (index.html Изменения в каждом Run — конвертер переписывает его). --doc <id> --list Показать историю, --doc <id> --rollback - Передвигает указатель назад. html blocks на этом page немонтированные (--keep-blocks Держите их).
The page Сохраняет платформу's технический layer выше своего widget — breadcrumbs и page heading — потому что page это category и рисует его сплетенный blocks. Для 1:1 page переключать layer off с помощью page флаги на zone block __page:top (/docs/webcoding §16.1: Создать или обновить с {"kind":"zone","refs":[<your block id>],"page":{"hideSystemBlock":true}} И привяжите его к себе block (PUT /categories/{id}/content-blocks это заменить-set). hideSiteHeader / hideSiteFooter Делайте то же самое для chrome когда page привносит в own. transfer.mjs монтировать block и оставляет после себя Слои, как они есть.
Проверить: Открыть url При этом печатается на dev key Это <slug>--dev Хозяин, под owner's Сессия — и ничего не подтверждать Платформа показывает выше вашего first section.
4.6 Продукты и category шаблоны
node backend-3D/tools/html-transfer/transfer.mjs ./product --name "Product template"
# html block → group group_type:"product" with props.widgets:[<block>] → binding:
curl -s -X PUT -H "Authorization: Bearer $VZ" -H 'Content-Type: application/json' \
$API/design/bindings/category_children/<root category id> -d '{"slots":{"body":<G_product>}}'category_children И каждый из них product из поддеревьев; /product/<id> это один product. А. category template это group category в slot body; keep Платформа productListing внутри group когда фильтры и paging Нужны — нужны own-разметка feed составляет ≤ 48 rows. Внутри template тот page's product это product ({{ product.name }}, {{ product.price_text }}, product.gallery[].url, product.attributes[]), тот section это category, crumbs и menu Везде есть.
Проверить: Две открытые products — один card Каждый из них – печатный price равные GET /products/{id}; vz-add-to-cart закладывает item в cart.
4.7 Переплетение data
| В этом source | На платформе |
|---|---|
| рукописный menu | <li vz-for="m in menu"><a href="{{ m.url }}">{{ m.name }}</a></li> (дети: c in m.children) |
| а product полоса с типизированными ценами | <article vz-for="p in products"> … {{ p.price_text }} … <button vz-add-to-cart="{{ p.id }}"> |
| а product page макет | {{ product.* }}, vz-gallery, vz-variants, vz-add-to-cart, vz-fav |
| а contact form | <a href="form:<id>"> (forms: мастерство forms, /forms) |
| Внутренние ссылки | /path на site, или vz:page/<id> — never тот export ведущий |
| а cart icon с прилавком | <span vz-cart-count> |
vz-for и vz-if Иди по-другому nodes. Имена и scope fields: GET /docs/vz-keys.json — ан unknown vz- Атрибут удаляется молча.
Проверить: curl <page> | grep '<a real product name>' Найдет его в сыром HTML; Добавить в item Меняет счетчик.
4.8 Проверить и сообщить
- Открытый прямым URL и Кликнуть из другого page из site — два code пути;
- Скриншоты 1440 и 390;
- Консоль: нет ошибок, нет 404
/_html/; /cartпоказать свой header и footer;--doc <id> --listпоказывает active освобождение.
Отчет: ссылки, оба скриншота, что было поднято, что было снято и why, Откат команды.Токен нигде не появляется.
5.Безмолвно ignored
| Ты написала | Что происходит | Делайте вместо этого |
|---|---|---|
document.addEventListener('DOMContentLoaded', init) | Пожары при прямом попадании; after в-site щелкните document Уже загружен и init never бегать — page Двое мертвых | звонить init() немедленно и далее document's vz:navigate |
<meta property="og:*">, <base>, <link rel="manifest">, <meta http-equiv> | уронить publish (head.stripped) | ог-images: тот page's SEO fields; а manifest: не поддерживается |
body { overflow: hidden } из модального script | применяется к .vz-body-{doc}, Не для реального body — Нет блокировки прокрутки | Замковый свиток на вашем own корневой элемент |
fetch('data/x.json'), img.src = 'assets/a.jpg' в .js file | Решения от The page URL → 404 на окне site (js.assets предупреждение) | prefix с помощью widget корень: dataset.vzBase / window.VZ_ASSET_BASE |
<title> и <meta name="description"> когда page уже есть SEO | Они были сохранены, как | --seo-overwrite |
props.wrapperClass, blockWidth, paddingSides на level-3 block без boxed | Нет коробки, на которую можно приземлиться; ничего не меняется. | твой own CSS на корень, или props.html.boxed: true А потом топоры |
секундочку .html в папке | не служил (page.extra) | один page = одной папкой или всей site как site папка (§2)) |
а header, footer или template Без лишних <title> | а page.noindex предупреждение — нормальное для фрагмента, который не является page | Игнорировать его для chrome и шаблоны; pages нести <title> |
а file ссылается только на .js (img.src = base + 'assets/a.svg') | а file.unused предупреждение — валидатор читает HTML и CSS Ссылки, а не сценарии; file Загружается и обслуживается все одинаково | keep тот VZ_ASSET_BASE fallback в script И не обращайте внимания на предостережение |
а path внутри CSS comment (/* url("fonts/x.woff2") */) | Валидатор читает url() В комментариях тоже — ref.missing error для file которого нет в папке | Удалить пример path или добавить file |
<script> в header на /cart, /checkout, /account | не выполнено, нет error | Разметка и стили только там |
<form action="…"> Без обработчика | а form.nohandler предупреждение; браузер публикует сообщения в export ведущий | href="form:<id>" |
а .vizenignore с одним line | заменять неисправности (.*, node_modules/, previews*/, originals/, README*, *.md, qa.mjs, *.log) | Повторите дефолты, на которые вы полагаетесь |
--theme <id> --page <slug> | Отказ: А layout не установлен на page | Две команды |
6. Пределы
| Limit | ценность |
|---|---|
| files за освобождение | 500 |
index.html | 2 MB |
| любой file | 50 MB |
| освобождение / ZIP body | 60 MB |
own-разметка feed products[] | 48 rows |
block sections JSON | 64 KB — never рядный HTML там |
wrapperClass | ≤ 3 названия, ^[a-zA-Z_][a-zA-Z0-9_-]*$, none Начиная с vz- |
| ставка limits за одну компанию в минуту | читать 600, писать 240, хранить 180 |
| image file (Советы, а не отказ) | ≤ 400 KB, width/height set (img.large, img.nosize) |
Коды валидаторов — ошибки: ref.outside, ref.missing, ref.http, file.forbidden, sw.register, hash.mismatch, html.parse; warnings: page.extra, js.assets, head.stripped, form.nohandler; информация: img.large, img.nosize. Источник: internal/api/htmlrelease/validate.go.
7.Контракт на время выполнения — что платформа делает с вашим устройством file
- обертка.
<body class="dark" data-x="1">становится<div class="vz-body vz-body-{doc} dark" data-x="1" data-vz-base="/_html/{doc}/{rid}/">. Чистая разметка получает то же самое wrapper. Нет никакого.vz-box/.vz-innerвокруг если толькоprops.html.boxed: true. Див сидит в page<main>между тот header и footer. - Голова.
link,style,script,noscriptСохраняется в a hiddendiv.vz-head-{doc}before тот body — таблицы стилей load, Сценарий работает;titleиmeta descriptionИди к нему. page SEO; все else выпадает. - CSS наброски. банальный
body,html,:rootв<style>и в том, освобождение's.cssfiles Переписывается для.vz-body-{doc}; составные селекторы (body.dark) Остались одни.src,href,srcset,url(),@importПереписывается в widget корень output — тот files сами по себе не являются касаться. - Каскад делится. Уровень 3 - это реально page DOM без style изоляция. Витрина магазина's Стиль лист применяется к вашей разметке и он поставляется Tailwind v4 предполетный в
@layer base(измеряется в live CSS, 2026-09-12):*{margin:0;padding:0;border:0 solid}·h1,…,h6{font-size:inherit;font-weight:inherit}·a{color:inherit;text-decoration:inherit}·ol,ul,menu{list-style:none}·img,svg,video,canvas{display:block;vertical-align:middle}·img,video{max-width:100%;height:auto}·button,input,select,textarea{font:inherit;background:transparent;border-radius:0}·button{appearance:button}. Твой CSS Неустойчивый и побеждает на равных Специфика, поэтому все, что вы стилизовали явно, выживает; то, что вы оставили на браузерные дефолты — heading sizes, пули, link подчеркивать, button chrome — Перезагрузите корабль. own base Стиль под корнем class. The page шрифт являетсяui-sans-serif, system-ui16 х; вашbody { font-family }земля на.vz-body-{doc}Только. Список стилей, связанный с любым level-3 widget достигать тот целое page (тот product card из vezu-vezu Он берет свой шрифт из header'sglobal.css); тот editor Однако, канвас загружает только layout's<head>— site-широкий CSS принадлежит к layout папка (§4.3)). - Сценарии.
<script>и<link>когда браузер парсирует page. Ссылки вашей разметки открываются без перезагрузки (vz-reloadотдавать предпочтение link выходить,/docs/own-markup§4.0. После такого щелчка платформа воссоздает все<script>узлы widget Так что он снова бежит — сделайте второй пробег безвредным; аCustomEvent('vz:navigate', {detail:{path}})пожары наdocumentafter Каждая навигация и after тот first load. Писать code Это работает, когда выполняется прямо сейчас, и-init наvz:navigate. внешний иdeferСценарий не имеетdocument.currentScript: Читать корень из.vz-body-<id>илиwindow.VZ_ASSETS[<id>]; два widgets на одном page перезаписывать голыйwindow.VZ_ASSET_BASEдруг для друга. - Охраняемые зоны. Над
/cart,/checkout,/account,/wishlist,/orders,/coupons,/deals,/dashboardВаша разметка и стили render и ваш скрипты — это стертый сервер-side; тот layout'shead_html/foot_htmlесть И не выбрасывается. Переезжая в и из такой page это full перезарядить, так что layout script снова бегает.hiddenвыживать;data-*делать не — keep "закрытый default" в layout CSS через class илиhidden. Счетчики, состояние входа и поиск все еще работают там: это ключи, а не твой script (/docs/own-markup§4.0). - Пути.
/_html/{doc}/{rid}/…неизменяем и обслуживается байт-за-байт — не переусердствуйте с вашим own images (PNG/JPG из папки являются never посланный в рециркулировать, так size Сама покупай. images написанный как<img src>переписывается на ресивер сsrcset; setsizes. Только active релиз подается; старые риды отвечают 404 design. - Геометрия. Проверить fixed прикрепление и query-container side Эффекты с использованием
/docs/own-markup§7.2. Невключенный level-3 HTML изменениях, main query container; не является ни одним из них, ни одним из visibility rule. - Раскладывание папок дельты. Сфера охвата class
.vz-theme-{doc}на page корень, реальный<head>теги,window.VZ_THEME_BASE, фавиконы изicon.png—/docs/own-markup§7.2.
якоря: packages/sections/src/sections/SectionHtmlAuthored.tsx, storefront/src/widgets/html/Slot.tsx (hasUnboxedAuthored), storefront/src/lib/render/PageShell.tsx и storefront/src/app/globals.css (vz-has-authored, @import 'tailwindcss'), pkg/htmlrefs/fragment.go (SetBodyBase, наброски), internal/api/catalog/get_html_document_content.go.
8.Копия; Remap · drop
| В завершенном site | Верб | Где приземляется |
|---|---|---|
| page разметка, CSS, JS, шрифты, images | копия | page папка → level-3 widget на type:"page" page |
| header, footer | копия + переназначать menu и cart контраргумент | chrome group, привязанный к shop, а section или layout |
| делиться CSS, шрифты, favicon, а site-широкий script | копия | тот layout папка |
| product page, category page | копия разметка, переназначать тот data | product/category group в slot body; {{ product.* }}, {{ category.* }}, products[] |
| menu, product списки, цены, дополнения-cart, список пожеланий | переназначать | vz-for, price_text, vz-add-to-cart, vz-fav — или платформы widgets |
| forms | переназначать | href="form:<id>", тот forms мастерство |
| Внутренние ссылки | переназначать | /path, vz:page/<id> |
<title>, <meta name="description"> | переназначать (автоматический) | page SEO |
| браузер-default стиль (нестилевые заголовки, пули, ссылки)) | переназначать | твой own base Стиль под корнем class (§7.4) |
| cart, checkout, account, orders | drop | system pages платформе; ваши - это header, footer и layout только |
| React роутер, состояние, own приносить, SPA снаряд | drop | export Статически один маршрут = одна папка (§ 9), или целое export как site папка (§2)) |
другой <head> nodes, сервисный работник, сервер code, http:// ресурсы | drop | — |
9. Рамочные примечания
- Реакция / Вайт / Следующий. Клиент, отданный SPA корабли, empty
index.htmlИ все это он забирает script: нет text Поисковые системы и a page это Выглядит мертвым до тех пор, пока bundle Экспорт статически (SSG или предзаказа, один Путь = одна папка = одна папка widget,base: './'Пути активов являются Роутер, глобальное состояние и data не приносить move — тот shop's data Проходить черезvz-ключи или платформа widgets. Сценарии должны начинаться немедленно и вновь-init наvz:navigate. CORS Открыт дляlocalhost, так местный dev Сервер может вызывать API с токеном на preview реальный data; тот опубликованный widget не выдавать content на его own. - Tailwind в проекте. Составьте его в папку; не load тот CDN Время выполнения. Ваша компиляция. CSS Сидит над платформой's
@layer baseи побеждает. - гадость-code, Webflow, экспорт Tilda. Обычные папки. Типичные исправления: активы, которые указывают на export ведущий (download Войдет в их ряды —
http://Отказывается, а<base href>(В любом случае,), jQuery$(document).readyиwindow.onload(Беги один раз, Re-init наvz:navigate). - Шрифты.
woff2в page в папке или в layout Ссылка на папку с родственникомurl()в@font-face;<link rel="preload">в layout's<head>. - Изображения. Выпуск files Они будут служить, как они есть, — before загружать. Каталог images Прибытие предварительно нарезанного через scope fields (
p.preview).
10.Как это было проверено
- 2026-09-12, live shop vezu-vezu (Компания 14), prod key из owner:
GET /v1/account/token;GET /html-documents— 15 документов в трех поколения (level 1 → level 1 → level 3), 31 выпуск в total; тот header document'sglobal.cssСтили в стиле product page (h1вычисленный шрифт Монтсеррат 26 px 700 из header's таблица стилей; аposition: fixedжелезнодорожный измерено 900 × 161 px в 1440 × 900 видопорт и 844 px высотой 390 × 844 (драматург, Хром). - Живой магазин CSS (
/_next/static/chunks/*.css) Для предполетного полета Правила, перечисленные в § 7.4; Tailwind 4.3.2 в разделеvizen-market/node_modules. - Код читать:
SectionHtmlAuthored.tsx,Slot.tsx,PageShell.tsx,globals.css,htmlrefs/fragment.go,htmlrelease/validate.go,tools/html-transfer/transfer.mjs. - 2026-09-12, стенд
local-stand.sh(:3970/:5621), shopproverka-limita-1, стартовый комплектtools/html-transfer/examples/: layout папка (фавиконы) генерируемый), header + footer привязанный к shop, pagedemo, product template привязанныйcategory_children; Измеряется с помощью playwright-core: fixed рельс 900 px в окошке 900 px,h136x отbase.css, menu изvz-for, тот widget корень/_html/48/207/в script's note,/cartс header и footer но без разметки, без header's относительный стиль, page breadcrumbs и heading выше widget до тех пор, покаhideSystemBlock. The document оставатьсяdraftдо тех пор, пока owner's first external передача.
11.Отрицания в этом document (rule §3.9)
| Претензия | схваченный true через |
|---|---|
| level 3 не дезинфицируется и не завернут в тень DOM или iframe | SectionHtmlAuthored.tsx рендеринг light DOM; get_html_document_content.go Пропустить санитар для level 3 |
| fixed прикрепление и query-container side Эффекты зависят от surface/browser | использовать матрицу и локальные доказательства браузера в /docs/own-markup §7.2; vz-has-authored изменения range visibility нечеткое (нечеткое) содержание |
| а ZIP релиз не создает document | htmlrelease/zip.go Решает существующий document id; только transfer.mjs Создает документы и крепления blocks |
| а header widget's CSS не ограничивается только header в level 3 | измеряется vezu-vezu (§10. никаких ворот. — after-волна проходит |
Сценарии не работают в охраняемых зонах — и родственник <link rel="stylesheet"> из widget Там тоже не выпускается | storefront/src/lib/forbiddenZones.ts, статический mode в Slot.tsx; измеренные на стенде 2026-09-12 (/cart: header присутствующий знак, header.css отсутствие, layout global.css присутствующий) |
| освобождение files не переизмеряется | htmlgw служить bytes как храниться; нет ворот; — after-волна проходит |
npx serve . Не показывает, что site шоу | Строительство: нет page, Нет каскада, нет замен на местном уровне; нет ворот |