Bonjour @celine_vendeur,
Je vois que tu es sur PrestaShop 1.7.3.1 avec le thème Classic. Le problème que tu rencontres est très fréquent avec Smarty et les scripts JavaScript.
Comme l'ont mentionné @manonhub et @adrienvelo90, la meilleure pratique est de ne jamais modifier directement les fichiers du thème parent. Deux solutions s'offrent à toi pour une intégration propre :
- Utiliser un thème enfant : Si tu n'en as pas déjà un, c'est le moment d'en créer un. Tu pourras y copier le fichier
_partials/head.tpl du thème Classic et y apporter tes modifications en toute sécurité.
- Créer un petit module personnalisé : Ce module contiendrait une méthode
hookDisplayHeader() qui retournerait ton script GTM. C'est la méthode la plus modulaire et la plus simple à gérer pour des scripts.
Dans les deux cas, la clé pour résoudre l'erreur de compilation Smarty est d'utiliser les balises {literal} et {/literal} autour de ton code JavaScript. Elles indiquent à Smarty d'ignorer le contenu et de le laisser tel quel. Voici comment ton _partials/head.tpl (dans ton thème enfant) devrait ressembler pour le GTM :
{* Place ce bloc juste avant la fermeture de </head> dans ton thème enfant's _partials/head.tpl *}
{literal}
<!-- Google Tag Manager -->
<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>
En encadrant le script avec {literal} et {/literal}, Smarty ne tentera plus de traiter les accolades JavaScript comme des variables. Pense à bien vider le cache Smarty après la modification.