Problemas comuns
Os erros que a conferência do tema mostra, o que eles querem dizer e como
corrigir, mais as dúvidas que mais aparecem. Cada erro vem com o arquivo, a
linha e um código, como html_event_handler.
Erros de HTML
O tema não roda JavaScript na página. Tudo que executa código é recusado.
| Código | O que houve | Como corrigir |
|---|---|---|
html_script |
uma tag <script> |
Use os atributos data-hystore-* ou um app isolado |
html_event_handler |
um atributo onclick, onload... |
Troque pela peça interativa da loja (veja o guia) |
html_script_url |
link javascript:, vbscript: ou data: que não é imagem |
Aponte para uma página (/loja) ou use data-hystore-open |
html_style |
uma tag <style> |
Ponha o CSS em styles/<nome>.css |
html_style_attr |
CSS perigoso em style="" (expression, behavior, javascript:, @import) |
Use CSS normal num arquivo de styles/ |
html_iframe |
<iframe> ou <frame> |
Para vídeo, <hystore-video data-youtube="...">; para Discord, o bloco discord |
html_form |
<form>, <input>, <select>... |
Formulários são da loja; para busca use <hystore-search> |
html_embed |
<object>, <embed>, <base>, <meta>, <link> |
Tire; fontes e estilos entram por styles/ e assets/ |
html_svg_foreign |
<foreignObject> dentro de um SVG |
Desenhe só com SVG |
html_ping |
atributo ping em link |
Tire o atributo |
html_entity_trick |
entidade numérica como j |
Escreva o caractere direto |
html_srcdoc, html_http_equiv |
atributos srcdoc ou http-equiv |
Tire o atributo |
Erros de CSS
| Código | O que houve | Como corrigir |
|---|---|---|
css_url |
url() para fora do tema |
Envie a imagem para assets/ e use url(assets/nome.webp); fontes do Google em fonts.gstatic.com também valem |
css_import |
@import |
Cada arquivo de styles/ já é carregado; fontes com @font-face |
css_escape |
barra invertida fora de texto entre aspas | Escreva o valor sem escapar, ou dentro de aspas |
css_expression, css_binding, css_script_url |
recursos antigos que executam código | Tire; não existe equivalente seguro |
css_image_set |
image-set() |
Use url() com uma imagem do tema |
css_at_rule |
@namespace ou @document |
Tire |
css_reserved |
o seletor mira a área obrigatória da loja | Essa área (anúncios e links legais) não pode ser estilizada |
Erros de Liquid, seções e JSON
| Código | O que houve | Como corrigir |
|---|---|---|
liquid_syntax |
Liquid mal fechado ou tag que não existe | Confira {% if %}...{% endif %}, {% for %}...{% endfor %} e o nome da tag |
load_unknown |
{% load %} de um dado que não existe |
Veja a lista em Dados |
block_unknown |
{% hystore_block %} com nome que não existe |
Veja Blocos prontos |
name_not_literal |
{% render %}, {% section %} ou {% hystore_block %} sem o nome entre aspas |
Escreva o nome entre aspas: {% render 'card' %} |
reference_missing |
o tema usa um componente, seção ou app que não existe | Crie o arquivo ou corrija o nome |
asset_missing (aviso) |
asset_url ou url(assets/...) para uma imagem que não foi enviada |
Envie a imagem para assets/ |
schema_place, schema_twice |
{% schema %} fora de sections/, ou dois |
Um schema por seção, só em sections/ |
schema_settings, schema_setting_id, schema_setting_type, schema_setting_duplicate |
campo do schema inválido | id em minúsculas e único; type da lista de tipos |
json_invalid |
JSON quebrado | Confira vírgulas e aspas; JSON não aceita comentário nem vírgula no fim |
template_section, template_order, template_shape |
templates/<página>.json aponta para seção que não existe ou está fora do formato |
Veja o formato em Seções |
locale_shape, values_shape |
locales/*.json ou config/values.json fora do formato |
Textos em objetos aninhados; valores em { "settings": {...} } |
locale_missing (aviso) |
falta en.json ou es.json |
Crie o arquivo; até lá, aparece o português |
Erros de arquivos e limites
| Código | O que houve | Como corrigir |
|---|---|---|
path_invalid |
caminho fora das pastas do tema ou com maiúsculas | Veja a pasta: minúsculas, números, - e _ |
file_missing |
falta theme.json, layout/theme.liquid ou pages/home.liquid |
Crie o arquivo (o tema Base tem os três) |
file_too_big, too_many_files, theme_too_big |
passou de 256 KB por arquivo, 400 arquivos ou 5 MB | Divida o arquivo ou tire o que não usa |
content_binary |
arquivo de texto com conteúdo binário | Imagens e fontes vão em assets/ |
app_index_missing, app_too_big, app_too_many_files, too_many_apps |
um app sem index.html, ou acima de 512 KB, 20 arquivos ou 10 apps |
Veja Apps isolados |
app_external_script, app_external_style, app_frame, app_form |
um app carrega coisa de fora, usa quadro ou formulário | Use só arquivos do próprio app e o /sdk/v1.js |
Dúvidas frequentes
Mudei o tema e a loja não mudou
Toda edição vai para o rascunho. Publique (ou aprove o pedido de publicação) e confira em Tema em código > Na loja se Usar o tema na loja está ligado.
A página ficou com o visual padrão da loja
Duas causas: a página não existe no tema (por exemplo, falta
pages/news.liquid), ou o tema falhou ao desenhar aquela página (um laço
gigante, um dado que não chegou). Nesse caso a loja cai no layout padrão em vez
de ficar em branco. Veja a prévia e confira o tema.
O carrinho, o pagamento ou o perfil não usam o meu tema
É de propósito. Páginas de dinheiro e de conta são sempre da loja, para
ninguém trocar um preço ou um botão de pagamento. Aponte os links para
/carrinho, /perfil e /entrar.
Posso usar JavaScript?
Na página, não. Para roleta, quiz, calculadora ou mini jogo, use um app isolado: ele roda num quadro em outro domínio, com uma ponte para o catálogo e o carrinho.
Posso carregar uma fonte do Google?
Pode: baixe o arquivo .woff2 e envie para assets/, ou use o endereço
https://fonts.gstatic.com/... direto no @font-face. O @import do CSS não
é aceito.
Duas pessoas editaram o mesmo arquivo
A segunda gravação é recusada com 409 em vez de apagar a primeira. No editor,
você escolhe entre a versão salva e a sua; na ferramenta, theme pull junta o
que dá e deixa a cópia da loja como .remote.
Publiquei uma versão com problema
Em Tema em código > Versões publicadas, traga uma versão anterior para o rascunho e publique de novo. As últimas 30 ficam guardadas.
Quero tirar o acesso de uma ferramenta ou IA
Personalização > Acesso ao tema: revogue a chave ou clique em Desconectar na sessão. O acesso para na hora.
Uma resposta da API veio com 429
Passou de 120 leituras ou 30 gravações por minuto. Espere os segundos do
cabeçalho Retry-After e tente de novo.
