Compteur de visiteurs et bloc de statistiques PrestaShop - Visiteurs en ligne, graphiques par pays, stats en pied de page
Montrez à vos visiteurs à quel point votre boutique est fréquentée. Un bloc compact placé dans le pied de page ou une colonne latérale affiche qui est en ligne maintenant, hier, aujourd'hui et vos totaux cumulés, avec des graphiques en anneau par pays et par continent. Les données des graphiques sont pré-agrégées et les compteurs sont mis en cache : le bloc reste rapide sur une grosse boutique, et le module ne stocke aucune adresse IP de visiteur. La géolocalisation fonctionne hors ligne depuis une base incluse. Huit langues. PrestaShop 1.7 à 9.
La preuve sociale que vous possédez déjà
Une boutique qui a l'air fréquentée convertit mieux qu'une boutique qui a l'air vide. Vous avez déjà la donnée — PrestaShop enregistre chaque visite depuis le jour de l'installation — mais elle dort dans le back-office, là où aucun client ne la verra jamais.
Ce module l'amène côté boutique : un petit bloc avec les chiffres qui comptent et deux graphiques qui montrent d'où viennent vos clients.
Cinq chiffres, en pied de page ou en colonne
Le bloc affiche qui est en ligne maintenant, hier, aujourd'hui, le total des visiteurs et le total des visites.
« En ligne » désigne les visites commencées dans les 30 dernières minutes — c'est la façon standard de mesurer cet indicateur, et mieux vaut le savoir pour que le chiffre ne vous surprenne pas. Le « total des visiteurs » compte les adresses IP distinctes ; le « total des visites » compte chaque visite. Les deux diffèrent volontairement, et afficher les deux raconte une meilleure histoire que l'un ou l'autre isolément.
Un décalage historique vous permet d'initialiser ces deux totaux avec le trafic accumulé avant l'installation : une boutique qui a cinq ans d'historique ne repart pas de zéro.
L'emplacement du bloc, c'est vous qui décidez
Trois interrupteurs sur la page de configuration : pied de page, colonne de gauche, colonne de droite. Seul le pied de page est activé par défaut.
Ce ne sont pas des filtres d'affichage. Activer une option enregistre le hook, la désactiver le désenregistre : le bloc est donc affiché exactement là où vous l'avez demandé, et à aucune autre position. La mise en page du pied de page et celle des colonnes sont deux templates distincts, chacun conçu pour l'espace qu'il occupe.
Une chose à savoir avant de le déplacer : les deux graphiques vivent avec le bloc du pied de page. Si vous désactivez le pied de page pour n'utiliser qu'une colonne, les compteurs fonctionnent exactement comme décrit, mais les boutons Pays et Continents n'ont plus rien à ouvrir. Laissez le pied de page activé si vous voulez les graphiques, et servez-vous des colonnes en complément plutôt qu'à sa place.
Il se tient bien sur les thèmes modernes, pas seulement sur Classic
La plupart des blocs de pied de page ont été écrits pour le thème Classic et se disloquent partout ailleurs. Celui-ci a été corrigé sur de vrais thèmes au fil de quatre versions.
Sur Hummingbird et les autres thèmes PrestaShop 8 et 9, le bloc détecte les colonnes de pied de page propres au thème — PRODUITS, ENTREPRISE, COMPTE, BOUTIQUE — et rejoint cette rangée comme une colonne de largeur égale, au lieu de passer à la ligne en dessous. Il hérite de la couleur de texte du pied de page au lieu de forcer une encre sombre, et reste donc lisible sur un pied de page foncé. Les classes responsives fonctionnent sous Bootstrap 5 comme sous Bootstrap 4 : le titre ne s'affiche pas deux fois et l'accordéon mobile s'ouvre et se ferme correctement dans les deux cas. Classic, le thème pour lequel la plupart de ces blocs ont été conçus, reste délibérément intact dans toute l'opération.
Une aspérité qu'il vaut mieux nommer que vous laisser découvrir : les petites icônes du bloc proviennent de Material Icons, une police que Classic charge et que Hummingbird ne charge pas. Sur une boutique Hummingbird, les deux boutons de graphiques affichent le nom de leur icône en toutes lettres, la petite flèche haut ou bas placée à côté du chiffre du jour fait de même, et les symboles d'ouverture et de fermeture de l'accordéon mobile ne s'affichent pas du tout. Les chiffres, les graphiques et la mise en page ne sont pas affectés. Ajouter la police à votre thème, ou remplacer ces icônes par celles de votre thème, règle le problème.
Deux graphiques, et d'où viennent leurs données
Des boutons ouvrent des graphiques en anneau par pays et par continent — les 20 premiers pays plus un « Autres » agrégé, et les continents dans un seul graphique. Une part correspond à la somme de vos comptages quotidiens de visiteurs uniques pour ce lieu : elle se lit donc comme une part relative, et non comme un décompte dédoublonné sur toute la période.
La bibliothèque de graphiques n'est chargée que lorsque quelqu'un ouvre effectivement un graphique. Sur toutes les autres pages vues, elle n'est jamais demandée. À noter : elle est appelée depuis un CDN public plutôt qu'embarquée dans le module, ce qui compte si vous appliquez une politique de sécurité de contenu (CSP) stricte.
Rapide parce que le travail coûteux n'est pas refait pour chaque visiteur
La méthode naïve consiste à tout recompter à chaque chargement de page. Sur une boutique dont la table des connexions est volumineuse, cela donne une requête lente sur vos pages les plus fréquentées.
Deux mécanismes l'évitent ici. Les graphiques sont pré-agrégés : un repère mémorise jusqu'où le module a lu le journal des connexions, chaque passage reprend là où le précédent s'est arrêté, et les nouvelles lignes sont cumulées dans des totaux quotidiens par pays et par continent. Dessiner un graphique lit ces petites lignes quotidiennes, jamais le journal lui-même.
Les cinq indicateurs, eux, sont comptés depuis le journal des connexions, parce qu'un total cumulé de visiteurs distincts ne peut pas être reconstitué à partir de résumés quotidiens sans dériver. Ce qui empêche que cela coûte cher : le résultat est écrit dans une table de cache et recalculé au maximum une fois par minute, quel que soit le nombre de personnes présentes sur le site. Vous payez ce comptage une fois par minute, et non une fois par page vue.
Une URL cron, et une boutique qui s'en passe
La page de configuration vous fournit une URL cron protégée par un jeton de 32 caractères. Planifiez-la toutes les heures et l'agrégation se fait entièrement en arrière-plan, jusqu'à 20 000 connexions par exécution.
Si vous ne la configurez jamais, le bloc fonctionne quand même : une requête côté boutique intègre un lot d'un maximum de 1 000 connexions à chaque expiration du cache des indicateurs, si bien qu'une boutique au trafic régulier reste à peu près à jour toute seule. L'intérêt de planifier le cron tient à l'endroit où le travail est effectué — en arrière-plan plutôt qu'à l'intérieur du chargement de page d'un client — et au fait qu'il ne dépend pas de la visite de quelqu'un. Une boutique peu fréquentée qui a un gros retard à rattraper le résorbera bien plus vite avec le cron que sans.
Une géolocalisation qui tourne sur votre propre serveur
Les recherches de pays s'exécutent entièrement sur votre propre serveur, contre une base de plages d'adresses IP embarquée de 188 686 plages, importée dans une table indexée.
Résoudre une adresse IP est une seule requête indexée, pas un balayage : le module utilise le schéma standard de recherche par plage, avec une clé primaire sur la fin de plage. Il n'y a pas d'API de géolocalisation, pas de quota par requête, pas de service tiers susceptible de tomber ou de se mettre à facturer, et aucune IP de visiteur envoyée où que ce soit pour enrichissement.
Une limite à connaître d'emblée : la base de plages est IPv4. Les visiteurs qui arrivent en IPv6 sont comptés dans tous les indicateurs, mais ils ne peuvent pas être rattachés à un pays et apparaissent dans les graphiques sous l'étiquette « Unknown ».
La position sur la vie privée, dite clairement
Les tables propres au module n'enregistrent aucune adresse IP de visiteur. Ni hachée, ni tronquée : absente. Les quatre tables qu'il crée pour les statistiques n'ont aucune colonne prévue pour cela.
Les IP des visiteurs sont lues dans la table des connexions existante de PrestaShop, gardées en mémoire juste le temps de calculer un nombre de visiteurs distincts et un pays, puis abandonnées. Ce qui est écrit, c'est un compteur par pays et par jour. La seule table qui contienne des adresses IP est la base de référence importée des plages d'adresses : une donnée publique qui décrit Internet, pas les personnes qui vous ont rendu visite. Afficher à un visiteur sa propre adresse IP dans le bloc est une option, et elle est désactivée par défaut.
Deux points à savoir plutôt qu'à découvrir plus tard. Le réglage de rétention est un chiffre documentaire, pas une purge automatique : rien n'est supprimé à votre place, et c'est avec les outils de PrestaShop que vous devez nettoyer la table des connexions.
Et le drapeau du pays affiché à côté de la localisation du visiteur est une image récupérée sur un CDN public de drapeaux. PrestaShop ne fournit de fichiers de drapeaux locaux que pour les langues que vous avez installées : pour la plupart des pays, le navigateur bascule donc bel et bien vers ce CDN, et il le fait que vous ayez activé ou non l'affichage de l'IP. C'est une petite requête d'image vers un tiers, pas un flux de données, mais si vous rédigez une notice cookies et confidentialité, mieux vaut l'y mentionner que la supposer rare.
Des réglages qui sont vraiment des réglages
Le décalage historique, la durée du cache des graphiques, l'intervalle de rafraîchissement des indicateurs, l'indication de conservation, l'option d'affichage de l'IP du visiteur et les trois interrupteurs d'emplacement tiennent sur une seule page, avec des valeurs par défaut sensées : données des graphiques conservées une heure dans le navigateur du visiteur, compteurs recalculés au maximum une fois par minute.
La même page comporte un outil IP de test : vous y collez une adresse et vous voyez exactement ce que le module en déduit, au lieu de deviner pourquoi un graphique semble faux.
Multiboutique
Chaque agrégat, chaque ligne de cache d'indicateurs et chaque repère d'agrégation est rattaché à une boutique et à un groupe de boutiques. Chaque boutique d'une installation multiboutique compte donc son propre trafic et dessine ses propres graphiques. La table de plages IP importée est partagée, car il n'y a aucune raison de conserver trois copies de la même donnée de référence.
Compatibilité
PrestaShop 1.7 à 9, en huit langues : néerlandais, anglais, français, allemand, italien, polonais, espagnol et turc.
Deux hooks sont toujours enregistrés — un pour charger les ressources du bloc, un pour lui transmettre ses réglages — auxquels s'ajoutent ceux des trois hooks d'emplacement que vous activez. Aucun override, aucune modification de thème. Le premier lancement demande deux étapes sur la page de configuration : importer les plages IP, puis actualiser les statistiques. Ensuite, le module se débrouille seul.
Questions fréquentes
Que signifie exactement « en ligne » ?
Les visites commencées dans les 30 dernières minutes. L'information est lue dans le journal des connexions de PrestaShop : aucun traçage supplémentaire, aucun cookie propre au module. Un visiteur qui lit la même page depuis 45 minutes n'est plus compté comme en ligne, ce qui est normal pour ce type de compteur.
Est-ce que cela ralentit ma boutique ?
La performance est l'axe autour duquel la version actuelle a été construite, et la réponse honnête tient en deux parties. Les données des graphiques sont agrégées en arrière-plan dans de petites tables de résumés quotidiens : dessiner un graphique ne touche jamais votre journal des connexions. Les cinq chiffres du compteur, eux, sont calculés depuis ce journal, mais le résultat est mis en cache et recalculé au maximum une fois par minute par défaut, quelle que soit votre affluence. Une page vue normale charge une petite feuille de style et un petit script, plus une petite image de drapeau ; la bibliothèque de graphiques n'est récupérée que lorsque quelqu'un ouvre un graphique. Le seul cas à connaître est celui d'une boutique sans cron planifié : un chargement de page peut alors aussi intégrer un lot d'un maximum de 1 000 connexions quand le cache expire — ce qui est précisément le travail que le cron sert à déplacer en arrière-plan.
Où le bloc s'affiche-t-il ?
Dans votre pied de page, votre colonne de gauche, votre colonne de droite, ou n'importe quelle combinaison : trois interrupteurs sur la page de configuration, pied de page uniquement par défaut. Activer un interrupteur enregistre le hook, si bien que le bloc apparaît aussi dans Apparence → Positions, où vous pouvez l'ordonner par rapport à vos autres modules. Gardez le pied de page activé si vous voulez les graphiques, car les fenêtres des graphiques font partie du bloc de pied de page ; les colonnes s'utilisent au mieux en complément plutôt qu'à sa place.
Le rendu sera-t-il correct sur mon thème ?
Sur Classic, il l'a toujours été. Le travail des quatre dernières versions a consisté à le faire tenir partout ailleurs : sur Hummingbird et les autres thèmes PrestaShop 8 et 9, le bloc détecte désormais les colonnes de pied de page du thème et s'aligne avec elles comme une colonne de largeur égale, et il hérite de la couleur de texte du pied de page pour rester lisible sur un pied de page foncé. Il émet à la fois les attributs Bootstrap 4 et Bootstrap 5, donc les bascules d'affichage et l'accordéon mobile fonctionnent dans les deux cas. La seule lacune connue concerne la police d'icônes : le bloc utilise Material Icons, que Classic charge et que Hummingbird ne charge pas ; sur Hummingbird, les boutons de graphiques et la flèche de tendance du jour affichent le nom de leur icône en toutes lettres, et les symboles de l'accordéon ne s'affichent pas. Tout le reste — les chiffres, les graphiques, la mise en page — n'est pas affecté, et ajouter la police à votre thème résout le point.
Le module stocke-t-il les adresses IP de mes visiteurs ?
Non. Les quatre tables que le module crée pour les statistiques n'ont aucune colonne IP. Les IP sont lues dans la table des connexions existante de PrestaShop, utilisées en mémoire pour calculer un nombre de visiteurs distincts et un pays, puis abandonnées. Ce qui est stocké, c'est un compteur par pays et par jour. Le module crée bien une table supplémentaire contenant les plages de référence importées : une donnée publique qui décrit Internet, et non quoi que ce soit sur vos visiteurs.
Le réglage de rétention supprime-t-il les anciennes données ?
Non, et il ne faut surtout pas supposer le contraire. C'est un chiffre documentaire que vous fixez pour correspondre à votre politique de confidentialité ; rien n'est supprimé automatiquement. Utilisez les outils de PrestaShop pour nettoyer la table des connexions au rythme que vous avez décidé.
Dois-je mettre en place une tâche cron ?
Pas pour que cela fonctionne. Sans cron, une requête côté boutique intègre un lot d'un maximum de 1 000 connexions à chaque expiration du cache des indicateurs : une boutique au trafic régulier reste raisonnablement à jour. Mettez tout de même le cron en place : il sort ce travail des chargements de page de vos clients, et il continue de tourner quand personne ne visite la boutique — ce qui compte vraiment sur une boutique peu fréquentée qui a du retard à rattraper. La page de configuration vous donne l'URL avec son jeton.
Le module appelle-t-il un service de géolocalisation externe ?
Non. Les recherches de pays s'exécutent contre une base de 188 686 plages IP livrée avec le module et importée dans votre propre base de données à la première configuration. Pas d'API, pas de quota, aucune IP de visiteur envoyée où que ce soit pour enrichissement. Deux requêtes externes existent en revanche, et il faut le savoir. La bibliothèque de graphiques provient d'un CDN public, mais uniquement quand quelqu'un ouvre un graphique. L'image du drapeau du pays, elle, provient d'un CDN public de drapeaux, et c'est là le cas normal plutôt que l'exception : PrestaShop ne fournit de fichiers de drapeaux locaux que pour les langues que vous avez installées, la plupart des pays basculent donc vers ce CDN, et cela se produit que vous ayez activé ou non l'affichage de l'IP. Mentionnez-la dans votre notice de confidentialité.
Mes graphiques sont vides, que faire ?
Exécutez dans l'ordre les deux étapes d'installation sur la page de configuration : importez les plages IP, puis actualisez les statistiques jusqu'à ce que l'opération annonce 100 %. Tant que les tables d'agrégats sont vides, les graphiques n'affichent qu'une seule part, « No data ». Les chiffres des indicateurs fonctionnent avant cela et n'en dépendent pas.
Tous mes visiteurs apparaissent en « Unknown », pourquoi ?
L'import des plages IP ne s'est pas terminé. Relancez-le depuis la page de configuration, puis utilisez l'outil IP de test de cette même page pour vérifier une adresse précise : il vous dira exactement à quoi le module l'a résolue. Les visiteurs qui arrivent en IPv6 sont comptés, mais ne peuvent pas être rattachés à un pays.
Mes totaux semblent trop faibles pour une boutique aussi ancienne, que faire ?
Renseignez une fois le décalage de visites historiques. Il s'ajoute au total des visiteurs et au total des visites, pour que votre compteur reflète le trafic que vous aviez avant d'installer le module. Il n'affecte volontairement pas les chiffres « en ligne », « aujourd'hui » et « hier », qui sont toujours en temps réel.
Puis-je afficher aux visiteurs leur propre adresse IP ?
Oui, il existe une option pour cela, et elle est désactivée par défaut parce que la plupart des boutiques devraient la laisser ainsi. Activez-la et une ligne s'ajoute au bloc, montrant au visiteur sa propre adresse à côté du drapeau de son pays.
Quelle est la différence entre le total des visiteurs et le total des visites ?
Le total des visites compte chaque visite. Le total des visiteurs compte les adresses IP distinctes. Plusieurs personnes derrière une même connexion de bureau ressemblent à un seul visiteur, et une personne dont l'IP mobile change peut ressembler à plusieurs — c'est inhérent à cette façon de compter, et c'est pourquoi le module affiche les deux chiffres plutôt que de prétendre que l'un d'eux est la vérité.
Est-ce que cela fonctionne sur une installation multiboutique ?
Oui. Chaque agrégat, chaque chiffre mis en cache et chaque repère est stocké par boutique et par groupe de boutiques : chaque boutique compte son propre trafic et dessine ses propres graphiques. La table de référence des plages IP importées est partagée entre elles.
-
CompatibilitéPrestashop 1.5
Prestashop 1.6
Prestashop 1.7
Prestashop 8
Prestashop 9 -
Traductions de Module DisponiblesAllemand
Anglais
Espagnol
Français
Italien
Néerlandais
Polonais
Turc
MEG Venture
4 autres produits dans la même catégorie
| Version | 2.1.16 |
|---|---|
| Dernière mise à jour | 2026-07-30 |
| Journal des modifications | - [2026-07-24] Add Polish and Turkish translations for visitor statistics module - [2026-07-23] Translate visitor stats module strings to Turkish for better localization and user experience. - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Add translation files for FR, DE, PL, NL, TR, IT, ES (7 languages) - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-23] Populate translation files with complete translatable strings - [2026-07-22] Align mobile compact title toggle arrow flush right (2.1.16) - [2026-07-22] Match mobile accordion title on Bootstrap 5 themes (2.1.15) - [2026-07-22] Fix Visitor Stats footer typography + duplicated heading on BS5 themes (2.1.14) - [2026-07-22] Fix footer placement under Hummingbird / non-Classic themes (2.1.13) - [2026-07-16] feat(blocksayac): Remove deprecated exception file and update template paths for footer and column displays - [2026-07-16] feat(blocksayac): Remove deprecated files and add new footer and column templates for visitor stats - [2026-07-16] feat(blocksayac): Update to version 2.1.12 with flag image support and various enhancements - [2026-07-16] feat(blocksayac): Update to version 2.1.11 with footer layout adjustments and third-party module handling - [2026-07-16] feat(blocksayac): Update to version 2.1.9 with selectable footer, left, and right column visibility options - [2026-07-16] feat(blocksayac): Update to version 2.1.8 with geo lookup fixes and improved import handling - [2026-07-16] feat(blocksayac): Update to version 2.1.6 with footer layout adjustments and geo lookup enhancements - [2026-07-16] feat(blocksayac): Update to version 2.1.4 with geo lookup enhancements and footer adjustments - [2026-07-16] feat(blocksayac): Update to version 2.1.2 with geo rebuild enhancements and UI improvements - [2026-07-16] feat(blocksayac): Add visitor stats module with admin configuration and front-end display - [2024-05-01] Performance upgrade. v1.4.2 - [2023-09-06] v1.4.1 - [2023-09-06] Initial commit |
• [2026-07-16] feat(blocksayac): Remove deprecated files and add new footer and column templates for visitor stats
• [2026-07-16] feat(blocksayac): Update to version 2.1.12 with flag image support and various enhancements
• [2026-07-16] feat(blocksayac): Update to version 2.1.11 with footer layout adjustments and third-party module handling
• [2026-07-16] feat(blocksayac): Update to version 2.1.9 with selectable footer, left, and right column visibility options
• [2026-07-16] feat(blocksayac): Update to version 2.1.8 with geo lookup fixes and improved import handling
• [2026-07-16] feat(blocksayac): Update to version 2.1.6 with footer layout adjustments and geo lookup enhancements
• [2026-07-16] feat(blocksayac): Update to version 2.1.4 with geo lookup enhancements and footer adjustments
• [2026-07-16] feat(blocksayac): Update to version 2.1.2 with geo rebuild enhancements and UI improvements
• [2026-07-16] feat(blocksayac): Add visitor stats module with admin configuration and front-end display
• [2024-05-01] Performance upgrade. v1.4.2
• [2023-09-06] v1.4.1
• [2023-09-06] Initial commit
• [2026-07-16] feat(blocksayac): Update to version 2.1.9 with selectable footer, left, and right column visibility options
• [2026-07-16] feat(blocksayac): Update to version 2.1.8 with geo lookup fixes and improved import handling
• [2026-07-16] feat(blocksayac): Update to version 2.1.6 with footer layout adjustments and geo lookup enhancements
• [2026-07-16] feat(blocksayac): Update to version 2.1.4 with geo lookup enhancements and footer adjustments
• [2026-07-16] feat(blocksayac): Update to version 2.1.2 with geo rebuild enhancements and UI improvements
• [2026-07-16] feat(blocksayac): Add visitor stats module with admin configuration and front-end display
• [2024-05-01] Performance upgrade. v1.4.2
• [2023-09-06] v1.4.1
• [2023-09-06] Initial commit
Commentaires (3)
Votre avis ne peut pas être envoyé
Signaler le commentaire
Signalement envoyé
Votre signalement ne peut pas être envoyé