Hola @joaquin_tienda43, gracias por la consulta. Entiendo que estás en PrestaShop 1.7.0.6, una versión que requiere un manejo cuidadoso de los templates Smarty, especialmente con JavaScript.
La forma más segura y nativa de insertar scripts y meta tags en la sección <head> de tu tienda, sin crear un módulo desde cero, es a través de la modificación del archivo _partials/head.tpl de tu tema hijo. Este archivo es el punto donde se renderiza el hook displayHeader ({$HOOK_HEADER}), que es el lugar correcto para este tipo de contenido.
El problema con las llaves de JavaScript se resuelve, como ya han apuntado, utilizando los tags {literal} y {/literal} de Smarty. Esto le indica a Smarty que ignore el contenido y lo renderice tal cual. Para tu caso, el código quedaría así en tu archivo themes/tu_tema_hijo/templates/_partials/head.tpl (o en su defecto themes/classic/templates/_partials/head.tpl si no usas tema hijo, aunque no es recomendable):
{* ... contenido existente del head ... *}
{literal}
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
</script>
{/literal}
Explicación de los cambios:
{literal} y {/literal}: Estos tags son cruciales en Smarty para envolver bloques de JavaScript (o cualquier código con llaves {}) que Smarty no debe intentar procesar como variables o funciones propias. Sin ellos, Smarty intentaría interpretar {'gtm.start': ...} como una variable o una llamada a función, causando errores de sintaxis en el template.
- Ubicación: Colocar este bloque al final del
<head> (pero antes del </head>) es una práctica común para scripts de seguimiento, aunque GTM suele recomendarse lo más arriba posible. Dentro de _partials/head.tpl, puedes ponerlo justo antes de la etiqueta de cierre </head> (o antes de {$HOOK_HEADER} si quieres que se ejecute antes de otros scripts inyectados por módulos).
- Meta Tag: La meta tag de verificación no necesita
{literal} porque no contiene sintaxis de Smarty que pueda ser malinterpretada.
Recuerda siempre limpiar la caché de Smarty después de cualquier cambio en los .tpl para ver los efectos.