Injetor de Código no Cabeçalho e Rodapé (CSS/JS): guia completo
Instalar, configurar e explorar a injeção de código CSS/JS/HTML no cabeçalho e no rodapé: snippets, locais, segmentação por página, ordem e multiloja para PrestaShop 8 e 9.
Apresentação
O Injetor de Código no Cabeçalho e Rodapé permite acrescentar código CSS, JavaScript ou HTML à sua loja PrestaShop sem modificar o mínimo ficheiro do tema. Tudo se gere a partir do back-office sob a forma de snippets: cada bloco de código tem o seu local, a sua segmentação de páginas, a sua ordem de injeção e o seu estado ativo ou inativo.
Casos de utilização típicos: Google Tag Manager, Google Analytics, Meta Pixel, etiquetas de verificação (Search Console, Pinterest…), estilos CSS personalizados, scripts de chat ou faixa de consentimento de cookies.
Instalação
- Descarregue o arquivo
dfcodeinjector.zipa partir da sua conta DataFirefly. - No back-office, abra Módulos > Gestor de módulos, clique em Carregar um módulo e carregue o arquivo.
- Clique em Configurar para abrir o gestor de snippets.
Compatível com PrestaShop 8.0 a 9.x, PHP 8.1 e superior, multiloja. Nenhuma dependência externa.
Criar um snippet
A partir do gestor, clique em Adicionar um snippet e preencha os campos abaixo.
Campos do formulário
- Nome: identificador interno do snippet (ex. « Google Tag Manager »).
- Local: o sítio onde o código é injetado (ver abaixo).
- Código: cole o seu código completo, etiquetas incluídas. É injetado tal como está, sem transformação nem purificação.
- Páginas visadas: deixe vazio para todas as páginas, ou selecione páginas precisas.
- Ordem de apresentação: os snippets de um mesmo local são injetados por ordem crescente.
- Ativo: ativa ou desativa o snippet sem o eliminar.
Os três locais
- Header (etiqueta head): para os estilos, etiquetas meta e etiquetas de verificação. Injetado através do hook
displayHeader. - Início do body: logo depois da abertura do body, para os contentores de marcação (ex. a parte noscript do GTM). Hook
displayAfterBodyOpeningTag. - Fim do body: logo antes do fecho do body, para os scripts de desempenho e de acompanhamento. Hook
displayBeforeBodyClosingTag.
Segmentação por página
Cada snippet pode ser difundido em todo o lado (campo vazio) ou restrito a certas páginas: página inicial, ficha de produto, categoria, CMS, pesquisa, carrinho, funil de encomenda, etc. O módulo compara a página atual com o controlador front (php_self); se estiver preenchida uma lista e a página não fizer parte dela, o snippet não é injetado.
Exemplos
Google Tag Manager
O GTM coloca-se em duas partes. Crie dois snippets:
- Snippet « GTM head »: local Header, cole o primeiro script fornecido pela Google:
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){ ... })(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
- Snippet « GTM body »: local Início do body, cole a parte noscript fornecida pela Google.
CSS personalizado
Local Header, envolva o seu CSS numa etiqueta style:
<style>
.header-banner { background:#0f172a; color:#fff; }
</style>
Etiqueta de verificação
Para a Search Console ou uma rede social, local Header:
<meta name="google-site-verification" content="O_SEU_CODIGO" />
Multiloja
Em contexto multiloja, cada snippet pode ser global (todas as lojas) ou reservado a uma loja precisa através do campo Loja. Em monoloja, este campo é ocultado e o snippet aplica-se à loja atual.
Compatibilidade de temas
A injeção na etiqueta head funciona com todos os temas. Os locais início e fim do body assentam nos hooks displayAfterBodyOpeningTag e displayBeforeBodyClosingTag, presentes no tema Classic do PrestaShop. Num tema personalizado, verifique que estes hooks são chamados nos templates.
Resolução de problemas
- O código não aparece: verifique que o snippet está ativo, que o local está correto e que a página atual faz parte das páginas visadas (ou que esse campo está vazio).
- Nada no início ou no fim do body: o seu tema provavelmente não chama os hooks correspondentes; use o local Header ou acrescente esses hooks ao tema.
- Conflito de ordem: ajuste o campo Ordem de apresentação para controlar a sequência de injeção.
Sendo o código injetado sem purificação, verifique a sua sintaxe (etiquetas bem fechadas) antes de ativar um snippet numa loja em produção.