VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa

Tema, layouts e navegação

Como a loja descreve sua aparência por API (tema, layouts de página, construtor de temas, menus) e o mapa das 10 rotas públicas para desenhar a vitrine.

A aparência de cada loja da Venddor é dado, não código: cores, fontes, o desenho de cada página (quais blocos aparecem e em que ordem) e os menus são cadastrados no painel e lidos pelo front-end por rotas públicas. Um front-end headless usa estas rotas para pintar a loja do jeito que o lojista configurou, sem hospedar tema algum.

São todas rotas de leitura, públicas e sem login, que respondem Cache-Control: no-store (exceto o ícone, que tem cache de 5 minutos). Quem edita tudo isto é o painel do lojista, em rotas próprias.

Pontos principais
  • Há dois motores de layout. Em rendering_engine das configurações de aparência, layouts significa layouts avançados (page-layout, shared-layout) e theme_builder significa o construtor de temas (theme-builder/page). Use o que a loja indicar e não misture.
  • O tema (theme e theme/css) vale para os dois motores: é a paleta e a tipografia.
  • Um identificador de página desconhecido não dá 404: page-layout/{dispatch} cai no layout "catch-all" da loja.
  • Layouts escondem por servidor os blocos restritos a grupos de clientes que o visitante não tem. Nada de blocos "VIP" vaza para quem não pode ver.
  • 204 No Content significa "esta loja não configurou isto". Use o desenho padrão do seu front-end.

Como funciona

  1. Leia o tema

    Tema e variáveis de CSS devolve cores, fontes e medidas. A rota theme/css já vem pronta para virar :root { --color-primary: ... }.

  2. Leia o layout da página

    Para cada página, chame Layout da página com o identificador da página (categories.view, products.view...). A resposta é uma árvore: contêineres, linhas, colunas e blocos.

  3. Leia os blocos compartilhados e os menus

    Cabeçalho, rodapé e painel superior vêm de shared-layout, e os menus de Navegação.

  4. Prévia de edição (opcional)

    O editor visual usa as rotas de prévia para mostrar o rascunho antes de publicar.

Conceitos-chave

Dispatch

Dispatch é o nome interno de uma página: index.index (home), categories.view, products.view e products.list, search.view, checkout.cart, auth.login, auth.register, vendors.view, vendors.profile, blog.view, blog.post. A lista exata depende da loja; um dispatch sem layout próprio usa o layout default (catch-all).

Contêiner, linha, coluna, bloco

Um layout avançado é uma grade. Cada página tem contêineres por posição (top_panel, header, content, footer); cada contêiner tem linhas, cada linha tem colunas com largura numa grade de 12 colunas por tamanho de tela (width_desktop, width_tablet, width_mobile), e cada coluna tem blocos (block_type: breadcrumbs, main_content, banners, listas de produtos...). main_content é o lugar onde o front-end encaixa o conteúdo real da página (produto, categoria...).

Tema ativo e estilo

A loja pode ter vários temas instalados, mas só um está ativo. As cores e a tipografia devolvidas já vêm do estilo ativo desse tema. O campo active_theme_slug identifica o tema para quem usa componentes específicos por tema.

Rotas

MétodoCaminhoPara que serveAutenticação
GET/api/v1/storefront/themeCores, fontes e medidas da lojaPública
GET/api/v1/storefront/theme/cssVariáveis de CSS prontasPública
GET/api/v1/storefront/pwa/icon/{size}Ícone do aplicativo (PNG)Pública
GET/api/v1/storefront/page-layout/{dispatch}Layout avançado de uma páginaPública
GET/api/v1/storefront/shared-layoutCabeçalho, rodapé e painel superiorPública
GET/api/v1/storefront/layout/{dispatch}Layout simples antigo (descontinuado)Pública
GET/api/v1/storefront/theme-builder/page/{pageType}Página do construtor de temasPública
GET/api/v1/storefront/editor-preview/{pageType}Prévia do editor visualPública
GET/api/v1/storefront/navigation/{location}Menu de uma posiçãoPública
GET/api/v1/storefront/navigation-menu/{id}Menu por idPública

Erros comuns

  • Esperar 404 para um dispatch desconhecido. page-layout/{dispatch} devolve o layout catch-all; só responde 204 quando a loja não tem layout algum.
  • Tratar 204 como erro. É a resposta normal de "nada configurado": o corpo vem vazio, então não chame .json() sem checar o status.
  • Usar o motor errado. Se rendering_engine for theme_builder, page-layout pode estar desatualizado. Confira o campo em Aparência.
  • Cachear o layout por muito tempo. As rotas respondem no-store porque o lojista pode publicar a qualquer momento. Prefira revalidar curto.
  • Passar um id inválido em navigation-menu/{id}. Um valor que não é UUID responde 500, não 400.

Próximos passos

Tema e variáveis de CSS
Cores, fontes e o ícone do app.
Layout da página
A árvore de blocos de cada página.
Navegação
Menus de cabeçalho e rodapé.
Anterior
Linha do tempo do pedido
Próxima
Tema, CSS e ícone do app
Nesta página
  • Como funciona
  • Conceitos-chave
  • Dispatch
  • Contêiner, linha, coluna, bloco
  • Tema ativo e estilo
  • Rotas
  • Erros comuns
  • Próximos passos