Vizen Shop

When the API said yes and the site says no

/docs/skill/vizen-troubleshootcurrentМашинный перевод с английского

Наша платформа принимает то, что игнорирует. Этот навык - список известных. Случаи и способ проверить что-либо вообще.

0.Спроси. before Вы пишете — ничего не стоит

POST /docs/validate
{"sections": [ … the same list you would PUT to /content-blocks/{id} … ]}

Ответы на каждый path: applied, ignored (Принимается и ничего не делает), unknown (kind/value непонятым или unverified (schema Недоступно - читать why), с разрешенным values - Для энум-мисс. schema Это не значит, что собственность ignored. Ничего не написано, никаких прав не требуется..

Это делает не Проверьте ids Есть ли у вас какие-либо признаки, которые могут быть написаны, или shop data, и этот конечный пункт намеренно never прикоснуться к ним.

1. Уже написал? Тогда: действительно ли это так? ignored?

200 означает, что запись была сохранена, а не value Используется.Два чека, в order:

  1. Перечитайте объект. GET /content-blocks и look в твоем value. Ушел или Изменился → письмо было отклонено по существу.
  2. Открой. page в браузере. Присутствует в объекте, но отсутствует на экране → тот widget Не читать этот реквизит.

Проверки браузера должны быть level-1 Тень DOM: использовать локаторы Playwright и Ждать видимого элемента after навигационная система (/docs/troubleshooting §2). Это section также охватывает why а production networkidle Ждать можно повесить.

2. Известные молчаливые неудачи

симптомПричинаИсправлять
а filter Вернуть весь каталогпараметр, написанный без filter. prefix — ?category_id=168 проглатывают, total Оставаться в full countfilter.category_id
а value Вне рамок рисует defaultunknown перечислять values принимаются молчабрать values из GET /docs/widgets
а link как бы texthref в siteHeader.links не поддерживается{label, url} или {label, target:{type,id}}
a выпадающий или модальный вырезается в block крайТеневой хозяин имеет overflow: clipсмотреть vizen-own-markup, wrapper section
тот site Выглядит не так, как локальная папка — small заголовки, никаких пуль, никаких подчеркиваний, голые кнопкивитрина магазина's Tailwind preflight сбрасывает браузер по умолчанию, и level-3 widget долях page каскадкорабль base.css Под корень class; /docs/transfer §7
fixed Переезды с предкомпроверить вычисленные contain/transform и target браузер; container-type Только один не является окончательнымследовать /docs/own-markup §7.2 и мера before/after Свиток: распаковка не проясняет каждого предка
Стильная таблица из header спектакли на live site Но не в том, editor холстКанва загружает только layout's <head>move site-широкий CSS входить layout папка (transfer.mjs ./theme --theme <id>)
тот header не останавливатьсялибо block sets props.overflow: "clip" (Поражение предков клипс sticky), Или ты попросила липкость внутри тебя own Накладка вместо накладки на blockvz-sticky на корневом узле, или props.position: "sticky"; Удалить старое fixed/spacer обходной путь только при замене его на рабочий sticky; Сохранить преднамеренное fixed дизайн
а платформа siteHeader/siteMenu/siteFooter игнорировать props.positionЭти виды рисуют свои own группа; block wrapper never Бежит за нимиsiteHeader имеет свой own props.sticky: true; Два других имеют none — own Наценка в комплекте вместо
а block наклеивать на live site Но не в том, editor previewтот editor Канвас не спрашивает у wrapper для липкостипроверить shop URL. Ничего не исправить
твой own class на block отсутствует из class=Имена проверяются целиком и сбрасываются целиком.: max 3, ^[a-zA-Z_][a-zA-Z0-9_-]*$, Ничего не начиналось с vz-Переименовать его; посмотреть vizen-own-markup §4
ты set props.wrapperClass и ваш CSS ничего не делаеттот CSS находится в level 1 document, Он находится внутри тени и cannot Смотри. wrappermove Этот стиль вписывается в level 3 document
Удаление не удается с invalid request bodyDELETE нуждается в bodyотправлять {}
~~ан image URL 404-й на HEAD~~закрыт с 2026 по 08-20 — Ответы рециркулирующего HEAD и GET одинаково; HEAD Это отличный способ проверить, что image URL решать—
два product cards на одном pageограниченный layout block плюс resource's own упакованный cardсмотреть vizen-chrome, card замена
а level-1 widget Для тех, кто не имеет site's шрифты и цветаВ обоих направлениях изолируется корень тени, поэтому layout's таблицы стилей never С 2026-09-13 они помещаются внутри корня тени, и ваша наценка завернута туда. .vz-theme-{doc} — тот theme применяется, и ваш own Правила все еще выигрывают. page не имеет layout В общем, или rule соединение (body.dark), который является never промокаемыйсвязывание layout (vizen-chrome §2а), или move это class на свой own корневой элемент
а level-2 menu Открывается только панель after Короткая паузаНе жук. Сервер печатает панели в HTML в рамках бюджета узла (60) nodes); корень, который не помещался, загружает свою панель на first щелкнуть GET /categories?view=menu — Один запрос на вкладкуНичего не починишь. own header Не пострадал: бюджет принадлежит платформе siteMenu
твой CSS Стили в стиле header И ничего else на pageа level-1 header Сохраняет свои CSS В тени своего корня (А) level-3 header's Стильная таблица достигает всего page — но не в том, editor холст)move входить в layout's папка, Где он приземляется на всех page И в холсте: vizen-own-markup §6.2
а style, шрифт или <head> Метка появляется на одном page толькоОн был загружен как page widget Вместо того чтобы layout папкатот же самый — transfer.mjs ./theme --theme <id>
layout Стили применяются, но layout's script never бегатьТы находишься /cart, /checkout, /account, /wishlist, /orders, /coupons, /deals или /dashboard — author code не исполняется в охраняемых зонах designНичего не исправлять; не планируйте там письменное поведение
твой script Работал над прямым попаданием и остановился after в-site щелкнутьНавигация мягкая, code когда-то бегал loadпереживать-init на document's vz:navigate event (detail.path), не в DOMContentLoaded
body {} / :root {} от layout папка не применяетсяСелектор представлял собой соединение (body.dark, body[data-x]) — только голый html/body/:root наносится на page кореньположите class на твоей own корневой элемент или использовать голый селектор
PUT /html-documents/{id} на layout's Ответы на папки THEME_DOCUMENT_PROTECTEDпапка's document Это услуга row; Меняется только через релизы.POST /themes/{id}/site/releases → PUT bytes → …/publish

Что-то тихое ignored который не указан здесь, относится к области document — backend-3D/docs/api-areas/ — как именованное дело.

3. Контрольный список приемки

Запускай все это before говорить owner Ты - это ты. done.

  • [ ] тот pages Ты сделал это не касаться look Неизменный — проверьте дом page и два sections;
  • [ ] тот page Открытие по прямой URL и щелкнув a link внутри site — Они отличаются друг от друга code Пути и сценарии ведут себя по-разному;
  • [ ] after в-site click: раскрывают выпадающие окна, открываются модали, запускаются таймеры;
  • [ ] тот header В нескольких ширинах, не только ваша;
  • [ ] горизонтальной прокрутки на page body;
  • [ ] тот cart Действительно принимает item — пресса button, смотреть на счетчик;
  • [ ] тот text присутствует в сыром HTML (curl И рыскать по нему, иначе Поисковые системы не увидят этого;
  • [ ] images Они подаются через резизер, а не как оригиналы.;
  • [ ] тот owner Он ясно говорит, что является обходным путем, а что нет..

4. Измерение, а не угадывание

Используйте браузер для проверки визуализированного page. Коды состояния cannot Скажи мне Открывается ли выпадающий или header Один пробег потратил 18% от его стоимости. steps на Это, и это было самое дешевое 18% в целом сборке - каждый вывод, что Выжившие пришли из измерения, и единственный вывод, который не выжил, пришел. Из чтения code вместо.

HTML widget (Папка / выпуск) — что обычно означает «ничего не изменилось»

  • `PUT /html-documents/{id}` ответы `HTML_PROJECT_USE_RELEASE`. The document имеет active Релиз: изменить его можно только через релиз (POST …/releases с base:"active" + Изменился files → PUT bytes → POST …/releases/{rid}/publish). Name/description Пройти через PUT.
  • Файлы 404 в site правильно after publish. Посмотри на это. page source: Корень актива должен быть NEW освобождение (/_html/{doc}/{rid}/). Только active релиз подается; старые риды отвечают 404 design. Твердо перезарядить page (тот html не каштан, то files Неизменный в пробеге).
  • Второй widget На том же page разбивает first один's images. The script Используется глобальный window.VZ_ASSET_BASE, который последний widget Перезаписывайте. Прочитайте корень из wrapper вместо: document.currentScript?.closest('.vz-body')?.dataset.vzBase (встроенный или document.querySelector('.vz-body-<id>')?.dataset.vzBase (external/defer).
  • `:root`/`body` Стили применяются на site Но не в вашем местном file, или наоборот. На шее site Они переписаны на .vz-body-{doc} (оба в ряд <style> и освобождение's .css files). Селекционеры как body.dark Не трогай себя – надень такие классы на себя. own корневой элемент.
  • Публикуем ответы 422 `RELEASE_INVALID`. Читать report.errors: ref.missing (а path Не в выпуске — проверьте чехол и папку), ref.outside (../ снаружи папки), hash.mismatch (bytes отличается от заявленной sha — перезагрузка, сервер не «исправляет» дайджест), file.forbidden, sw.register. Предупреждения (page.extra, js.assets, img.large) не block.
  • `FILES_PENDING` (409). Некоторые upload_urls были never PUT. Загрузить их и publish Опять же — освобождение id оставаться.
  • ZIP отвергнутый как слишком большой. The limit 60-й год MB по запросу; разделить медиа на first Отпустить и отправить остальное вместе с base:"active".
  • The page Не менялся after `transfer.mjs`. С момента пересмотра 6 page только смонтированный after успешный publish; валидатор error оставляет page Нетронутые — исправить отчет и повторить.
  • Отказ в освобождении компонента `422` с `component.manifest` или `COMPONENT_MANIFEST_INVALID`. А. kind=component освобождение должно нести component.json рядом с index.html; тот code Назвать обидчика field в ref (params[0].key). Ключи есть ^[a-z][a-z0-9_]{0,31}$, ≤ 32 из них, file ≤ 16 KB, select Не нуждается в-empty options, и а default должен быть параметром's own type. Ан unknown type является error Нарочно — это type Именно это и решает побег..
  • Отказ в освобождении компонента с `COMPONENT_TS_ERROR` / `COMPONENT_TS_CONFLICT`. *.ts в компонентной папке компилируется на publish В родную сестру *.js: тот error перевозить file:line:col, Конфликт означает рукописный app.js уже сидят рядом с app.ts (drop Импортные пути не переписываются — пишите "./util.js", тот file Браузер fetches.
  • Компонент находится на page Показаны только дефолты. Писать path это props.component.ref / props.component.params И ничего else; props.params или ref рядом с kind хранится, отвечает на 200 и отображает по умолчанию. key Этого нет в schema, или value Неправильное type, И это происходит так же тихо, как и раньше — читайте дальше page, Не то status code.
  • Компонент cannot быть размещены вообще. active_release_id на document это 0: Ни один опубликованный релиз не означает никакой разметки и нет schema. Опубликовать папку first; разобранный schema Возвращается как manifest на document И на каждом выпуске, так never читать component.json через gateway.
  • Канва администратора показывает block Без стилей. Полотно загружается files через подписанный preview Если вы видите необработанную накладку, block Прочитал старый клиент — вновь открыл page editor. На шее live site то же самое document Хорошо.

Исходник: https://api.vizen.shop/docs/skill/vizen-troubleshoot?full=1

Работает в демо-режиме