Sistema de temas

Funções

Funções de navegador que o JavaScript do tema pode chamar.

A vitrine carrega um pequeno script antes do JavaScript do tema. Ele define as funções abaixo no navegador do visitante.

promisseEvent#

Registra um evento da loja e dispara os pixels instalados, como fbq, ttq e gtag, com o mesmo identificador de evento.

JavaScript
await promisseEvent({
  event_type: 'addToCart',
  products: [{ id: 'UUID_DO_PRODUTO', name: 'Curso', price: 29.9, quantity: 1 }],
});
Campo Regra
event_type addToCart ou addToWishlist
products De 1 a 20 produtos, com id, name, price e quantity

A função devolve { ok, event_id }, ou null se o envio falhar. O limite é de 60 eventos por minuto. A contagem por dia aparece nos eventos da loja, no painel.

Para o pixel do navegador não contar uma compra em dobro com o envio pelo servidor, a compra usa um identificador fixo. Isso é feito pela própria vitrine, sem nada no tema.

getFeedbacksPaginationRequest#

Busca avaliações aprovadas da loja, com paginação e filtros.

JavaScript
const result = await getFeedbacksPaginationRequest({ page: 1, star: 5, order: 'recent', comment: true });

if (result) {
  for (const review of result.data) console.log(review.star, review.comment);
}
Opção Valores
page Inteiro a partir de 1
star 1 a 5, ou all
order recent, old ou all
comment true traz só as que têm texto

A função devolve o resultado abaixo, ou null se a busca falhar. O limite é de 120 buscas por minuto.

JSON
{
  "data": [{
    "id": "uuid", "star": 5, "comment": "Ótimo", "tags": [], "is_anonymous": false, "created_at": "...",
    "user": { "icon": "", "name": "Ana" },
    "product": { "name": "Curso", "image": "...", "price": 49.9, "comparison": null, "id": "uuid" },
    "product_id": "uuid"
  }],
  "pagination": { "page": 1, "limit": 25, "total": 138, "totalPages": 6 }
}

user é null em avaliação anônima, e comment é null quando só há nota. Só entram produtos públicos.

Carrinho#

O checkout lê o carrinho em localStorage, na chave cart. Para adicionar um item pelo tema, grave neste formato e leve o comprador para /cart:

JSON
[{ "product": "uuid", "variant": null, "amount": 1, "fields": [{ "id": "uuid do campo", "valor": "resposta" }] }]
Campo Conteúdo
product ID do produto
variant ID da variante, ou null
amount Quantidade
fields Respostas dos campos extras, ou lista vazia

O tema inicial já faz isso em assets/theme.js, e é um bom exemplo para copiar.