Comment ajouter un bandeau cookies à une boutique PrestaShop
PrestaShop n’a pas de champ du back-office pour le code du head : la balise va donc dans le fichier templates/_partials/head.tpl de votre thème, de préférence depuis un thème enfant qui étend le bloc head_charset du parent. Videz le cache, marquez les balises que vous collez avec type="text/plain" et un data-cq-category, et désactivez tout module de bandeau cookies ; le module RGPD officiel gère les demandes relatives aux données, pas les cookies.Étapes
Où coller la balise dans PrestaShop
Chaque page d’un thème PrestaShop construit son head à partir de templates/_partials/head.tpl. Dans le thème Classic comme dans Hummingbird, le fichier s’ouvre sur un bloc head_charset, suivi des balises SEO, des feuilles de style, du bloc javascript_head et du bloc hook_header, là où les modules impriment leurs balises. La balise a sa place juste après le charset, au-dessus de tout cela.
Modifier le fichier du thème lui-même fonctionne, mais une mise à jour du thème supprimerait la ligne. La documentation développeur de PrestaShop recommande un thème enfant, qui hérite de tout ce que contient son parent et ne surcharge que ce que vous modifiez :
- Dans
/themes/, créez un dossier tel queclassic-childavecconfig/theme.ymlet unpreview.png:
yamlparent: classicname: classic-childdisplay_name: Classic childversion: 1.0.0assets:use_parent_assets: true
- Créez
templates/_partials/head.tpldans l’enfant. Le préfixeparent:étend le fichier du parent : vous ne redéfinissez donc qu’un seul bloc :
html{extends file='parent:_partials/head.tpl'}{block name='head_charset'}{$smarty.block.parent}<script src="https://cookiequiet.com/cq.js" data-site="YOUR_SITE_KEY" data-consent-mode="1" data-auto-block="1" defer></script>{/block}
- Activez l’enfant sous Apparence, puis Thème & logo, puis videz le cache sous Paramètres avancés, puis Performances.
Si votre thème est un thème commercial, indiquez son nom comme parent et vérifiez que son head.tpl conserve le bloc head_charset ; c’est le cas de la plupart des thèmes construits sur Classic.
Quels cookies PrestaShop dépose-t-il lui-même ?
PrestaShop conserve le panier, la langue, la devise et la connexion du visiteur dans un seul cookie chiffré, nommé PrestaShop- suivi d’une empreinte. Il est valable 480 heures (20 jours) par défaut, une valeur réglée sous Paramètres avancés, puis Administration. Il est strictement nécessaire et n’exige donc aucun consentement. Les modules et les balises que vous ajoutez déposent le reste : lancez le scanner de cookies gratuit sur la page d’accueil, une page produit et le panier pour les lister.
Le module RGPD officiel de PrestaShop (psgdpr) n’est pas un bandeau cookies. Il ajoute des cases de consentement aux formulaires et permet aux clients de télécharger ou de supprimer leurs données personnelles, ce dont vous avez toujours besoin. Les modules de bandeau cookies de PrestaShop Addons doivent être désactivés après la bascule, pour que les visiteurs ne voient qu’un bandeau.
Comment gérer les balises ajoutées par les modules
- Le module Google Analytics officiel imprime la balise Google dans le HTML de la page depuis le hook d’en-tête. Une balise imprimée ainsi se charge avant que Cookiequiet puisse la retenir. Désactivez le module (ou laissez son ID vide) et collez la balise Google dans le
head.tplde votre enfant, sous la balise Cookiequiet, marquée :
html<script type="text/plain" data-cq-category="analytics" src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script><script type="text/plain" data-cq-category="analytics">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-XXXXXXX');</script>
Les événements e-commerce (ajout au panier, achat) se conservent plus facilement avec Google Tag Manager et Consent Mode, que le data-consent-mode="1" de Cookiequiet alimente.
- Les pixels que vous collez (Meta, TikTok, Pinterest) reçoivent
type="text/plain"etdata-cq-category="marketing". Le guide pour bloquer les scripts jusqu’au consentement montre chaque cas. - Les modules qui injectent des scripts en JavaScript (chat, widgets d’avis) sont couverts par le bloqueur automatique, qui retient les scripts et iframes d’environ 80 traceurs connus jusqu’au consentement.
Comment ajouter le lien Préférences de cookies
Allez dans Apparence, puis Link Widget, modifiez le bloc affiché dans votre pied de page et ajoutez un lien personnalisé nommé « Préférences de cookies » avec l’URL #cq-preferences. Cookiequiet ouvre le centre de préférences depuis tout lien qui a cette adresse. Un thème sans ce module peut accueillir le lien dans le modèle de pied de page de l’enfant.
Comment tester
- Ouvrez la boutique dans une fenêtre de navigation privée et cliquez sur Tout refuser.
- Vérifiez les cookies dans les outils de développement :
cq_consent, le cookiePrestaShop-, et rien de Google ni de Meta. - Ajoutez un produit au panier et parcourez le tunnel de commande : le panier est conservé, car le cookie de PrestaShop est nécessaire.
- Effacez les cookies, cliquez sur Tout accepter, rechargez : les balises marquées s’exécutent. Consultez le registre des consentements dans le tableau de bord.
Ce qui est propre à PrestaShop
- Cache Smarty. Quand le cache des modèles est activé, les modifications des fichiers
.tpln’apparaissent qu’après avoir vidé le cache. - Multiboutique. Chaque boutique qui a son propre domaine a besoin de sa propre clé de site, pour que les registres des consentements et les politiques restent séparés.
- Prix. Cookiequiet est gratuit pour une boutique, ciblage géographique compris, et Starter coûte 3 € par site et par mois sans limite de pages vues, voir les tarifs.
Questions
Sources
- Documentation développeur PrestaShop : créer un thème enfant
- Documentation développeur PrestaShop : le modèle head.tpl
- Thème Classic de PrestaShop : templates/_partials/head.tpl
- Code source de PrestaShop : classe Cookie (nom du cookie PrestaShop-)
- Documentation utilisateur PrestaShop : Administration (durée de vie du cookie du front office)
- Module RGPD de PrestaShop (psgdpr)