Editor visual da vitrine
Como o editor visual monta páginas da vitrine com seções prontas, rascunho e publicação, e o mapa das rotas.
O editor visual é a forma de montar a vitrine por seções: blocos prontos (banner, produtos em destaque, texto, newsletter...) que você coloca em contêineres da página, reordena e configura. A API trabalha sempre sobre um rascunho: nada aparece para o cliente até você publicar. Esta seção mostra como ler a página atual, editar o rascunho e publicar. Todas as rotas exigem token de administrador com o privilégio manage_layouts.
Como funciona
- Leia a página atual
GET /api/v1/admin/editor/layout/{pageType}devolve os contêineres e seções publicados, olayout_ide se já existe rascunho (has_draft). - Escolha seções
GET /api/v1/admin/editor/templateslista as seções prontas, com os campos configuráveis de cada uma. - Edite o rascunho
- Publique ou descarte
POST .../publishtorna o rascunho a página real.DELETE .../draft/{layoutId}joga o rascunho fora.
Conceitos-chave
Página, contêiner e seção
Uma página tem contêineres (áreas como top_panel, header, content, footer), e cada contêiner tem seções em ordem. Uma seção é uma instância de um modelo de seção (template_slug, por exemplo hero-banner), com sua config (as opções preenchidas) e visible.
O pageType é um "dispatch"
O parâmetro pageType de GET /editor/layout/{pageType} é o nome interno da página: index.index (inicial), products.view (produto), categories.view (categoria), checkout.cart (carrinho), blog.view, search.view, vendors.view e assim por diante. O servidor ecoa o valor que você mandou em page_type, e um valor desconhecido cai no layout da página inicial em vez de dar erro. O apelido homepage também funciona.
Publicar escreve na página padrão do layout
O rascunho é guardado por layout, não por página, e a publicação grava os contêineres na página padrão do layout (a página "catch-all"). Se você leu a página products.view e publicou o rascunho, o conteúdo vai para a página padrão do layout, não para a página de produto. Em lojas cujo layout tem páginas separadas por tipo, confirme na vitrine o efeito antes de publicar e prefira as rotas de advanced-layouts para editar uma página específica.
Identificadores
| Item | Formato |
|---|---|
layoutId | Inteiro (por exemplo 166). |
containers[].id | Texto. Na página publicada é um número em texto ("14434"); em contêineres criados pelo rascunho é o nome da posição (content). Todas as rotas aceitam o id ou o position do contêiner. |
sections[].id | Texto: número em texto nas seções publicadas, UUID nas seções criadas no rascunho. |
Rascunho id | UUID. |
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/editor/templates | Listar modelos de seção | admin |
| GET | /api/v1/admin/editor/layout/{pageType} | Ler a página publicada | admin |
| GET | /api/v1/admin/editor/draft/{layoutId} | Ler o rascunho | admin |
| POST | /api/v1/admin/editor/draft/{layoutId} | Gravar o rascunho | admin |
| POST | /api/v1/admin/editor/draft/{layoutId}/publish | Publicar o rascunho | admin |
| DELETE | /api/v1/admin/editor/draft/{layoutId} | Descartar o rascunho | admin |
| POST | /api/v1/admin/editor/draft/{layoutId}/section | Adicionar seção | admin |
| DELETE | /api/v1/admin/editor/draft/{layoutId}/section/{sectionId} | Remover seção | admin |
| PUT | /api/v1/admin/editor/draft/{layoutId}/reorder | Reordenar seções | admin |
| PUT | /api/v1/admin/editor/draft/{layoutId}/section/{sectionId}/config | Configurar seção | admin |
Erros comuns
- Publicar sem rascunho. Retorna 500 (
no draft exists for layout N). Confirahas_draftantes. - Esquecer o
positionao adicionar seção. O valor padrão é0: a seção entra no topo do contêiner, não no fim. - Gravar o rascunho com lista de contêineres incompleta e publicar. Contêineres que não estão no rascunho são apagados da página publicada (se o rascunho tiver ao menos um contêiner).
- Achar que a edição é por usuário. O rascunho é único por layout: releia antes de gravar.
- Usar
section_idsincompleto no reordenar. Seções que você não listar vão para o fim; id desconhecido gera 500. - Mandar só a opção alterada em
configesperando substituir tudo. Aqui oconfigé mesclado chave a chave, diferente dos layouts simples.