Détectez les extensions de navigateur de type bloqueur de publicités et affichez une superposition modale plein écran invitant les visiteurs à les désactiver avant de continuer à naviguer sur votre site.
Double détection
Utilise à la fois la détection des filtres cosmétiques basée sur le DOM et la détection du blocage des requêtes au niveau réseau pour une grande précision.
Comportement configurable
Contrôlez le délai de détection, la possibilité pour les utilisateurs de fermer la superposition, et personnalisez le texte affiché par langue.
Injection automatique
Un middleware global injecte automatiquement le détecteur dans toutes les pages de la partie publique : aucune modification de template n'est nécessaire.
Surcharge par le thème
Les thèmes peuvent fournir leur propre design de superposition du détecteur en surchargeant la vue par défaut.
Cas d'utilisation
Site de contenu financé par la publicité
Votre site dépend des revenus publicitaires. Lorsqu'un visiteur a un bloqueur de publicités activé, la superposition apparaît et l'invite à le désactiver. Vous pouvez bloquer tout accès jusqu'à ce qu'il s'exécute, ou l'autoriser à fermer la superposition et à continuer.
Modèle freemium avec publicités
Les utilisateurs gratuits voient des publicités, les utilisateurs premium non. Utilisez le détecteur pour imposer l'affichage des publicités aux visiteurs anonymes, tandis que les membres inscrits ne sont pas concernés (activez Ignorer les utilisateurs connectés).
Conformité éditeur
Les régies publicitaires exigent un nombre minimum d'impressions publicitaires. Le détecteur permet de s'assurer que vos emplacements publicitaires sont réellement rendus et visibles par les visiteurs.
Prérequis
- LaraClassifier / JobClass v19.0.0 ou ultérieur
- PHP 8.3+
- Aucune dépendance externe : l'add-on est entièrement autonome
settings du cœur de l'application.
Installation
Étape 1 : Téléverser l'add-on
Allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Téléverser un add-on et déposez le fichier .zip de l'add-on dans la zone de téléversement (50 Mo maximum).
L'archive est extraite dans extensions/addons/adsblockerdetector/ et Ad Blocker Detector apparaît dans la liste, désactivé.
extensions/addons/adsblockerdetector/ par FTP ou SSH : son fichier addon.json doit se trouver directement dans ce dossier.
Ouvrez ensuite Panneau d'administration → Extensions → Add-ons. La page analyse extensions/addons/ à chaque chargement : l'add-on est donc listé immédiatement (le bouton Synchroniser lance la même analyse à la demande).
Étape 2 : Activer l'add-on
Cliquez sur Activer sur la carte Ad Blocker Detector. C'est un add-on payant : une fenêtre demande son code d'achat, qui est vérifié avant toute autre opération. Un code invalide est refusé dans la fenêtre et rien n'est modifié.
Une fois le code accepté, l'activation se fait en une seule passe : elle crée les tables de base de données de l'add-on (ses migrations), enregistre ses permissions, exécute ses seeders et publie ses assets publics. Rechargez la page pour voir sa nouvelle entrée dans la section Add-ons de la barre latérale d'administration.
Étape 3 : Configurer
Ouvrez Panneau d'administration → Détecteur de bloqueur de pub depuis la section Add-ons de la barre latérale et configurez l'add-on : voir Admin : Paramètres.
Code d'achat (clé de licence)
Ad Blocker Detector est vendu comme un produit séparé, il possède donc son propre code d'achat (clé de licence), distinct du code d'achat de l'application principale et de celui de chaque autre add-on. Il vous est demandé lorsque vous activez Ad Blocker Detector dans Panneau d'administration → Extensions → Add-ons.
Nos produits sont vendus sur trois plateformes. La manière dont vous recevez un code d'achat dépend de l'endroit où vous avez acheté le produit.
| Plateforme / Marketplace | Comment vous obtenez le code d'achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Boutique) |
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail, soit dans son propre e-mail de licence, soit dans l'e-mail de confirmation de commande. | Mon compte → Mes licences sur bedigit.com |
| Gumroad | Créé dès que Gumroad nous notifie la vente, puis envoyé dans un e-mail séparé, en plus du reçu Gumroad. | L'e-mail de licence, votre Bibliothèque Gumroad, et Mon compte → Mes licences sur bedigit.com |
| Envato Market CodeCanyon |
Délivré par Envato, pas par nous, et jamais envoyé par e-mail : vous le téléchargez vous-même depuis votre compte Envato. | Compte Envato → Downloads → License certificate & purchase code |
1. Boutique bedigit.com (achat sur le site)
- Dès que le statut de paiement de la commande passe à Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée : l'achat de 3 unités donne 3 clés distinctes).
- Elle est envoyée par e-mail à l'adresse utilisée sur la commande, soit dans un e-mail de licence dédié, soit dans l'e-mail de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour révéler et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d'activation.
- La facture correspondante se trouve sous Mon compte → Mes commandes.
2. Gumroad
- Un achat Gumroad produit deux e-mails séparés : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un e-mail de clé de licence (envoyé par bedigit.com) qui contient votre code d'achat.
- L'e-mail de clé de licence est généré dès que Gumroad nous notifie la vente, il arrive donc normalement quelques secondes après le paiement. Là aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonction de clé de licence propre à Gumroad, la même clé apparaît aussi dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
- Utilisez la même adresse e-mail sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l'achat. Vous pouvez aussi ajouter une clé Gumroad manuellement depuis Mon compte → Mes licences Gumroad.
3. Envato Market (CodeCanyon)
- Les codes d'achat Envato sont délivrés et distribués par Envato Market, jamais envoyés par e-mail par nous, il n'y a donc rien à chercher dans votre dossier spam : vous récupérez le code depuis votre compte Envato.
- Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l'article, et choisissez License certificate & purchase code dans le menu déroulant Download. Le code est inscrit dans ce certificat.
- Un code d'achat Envato ressemble à
12345678-90ab-cdef-1234-567890abcdef(8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l'article n'en délivre pas de nouveau. - Article officiel Envato : Where Is My Purchase Code?
Configuration
Tous les paramètres se gèrent depuis le panneau d'administration, dans la section Add-ons de la barre latérale :
Panneau d'administration → Add-ons → Détecteur de bloqueur de pub. Ils sont stockés dans la table
settings du cœur de l'application (groupe adsblockerdetector).
| Paramètre | Description | Par défaut |
|---|---|---|
adsblockerdetector_enabled |
Activer ou désactiver globalement la détection des bloqueurs de publicités | true |
adsblockerdetector_detection_delay |
Délai en millisecondes avant de vérifier la présence d'un bloqueur de publicités (100–5000) | 300 |
adsblockerdetector_allow_dismiss |
Si les utilisateurs peuvent fermer la superposition sans désactiver leur bloqueur de publicités | false |
adsblockerdetector_skip_bots |
Ne jamais afficher la superposition aux moteurs de recherche, crawlers et agents IA connus (ni aux requêtes sans User-Agent), afin que les pages restent indexables | true |
adsblockerdetector_skip_logged_in |
Ne jamais afficher la superposition aux utilisateurs connectés (cela inclut déjà les administrateurs) | false |
adsblockerdetector_skip_admins |
Ne jamais afficher la superposition aux administrateurs (utilisateurs ayant le statut administrateur ou le rôle admin). Ignoré lorsque adsblockerdetector_skip_logged_in est activé. |
false |
adsblockerdetector_title |
Titre personnalisé de la superposition, par langue. Laissez vide pour utiliser la traduction par défaut. | vide |
adsblockerdetector_message |
Message personnalisé de la superposition, par langue. Laissez vide pour utiliser la traduction par défaut. | vide |
Les valeurs par défaut proviennent du fichier de configuration de l'add-on (extensions/addons/adsblockerdetector/config/adsblockerdetector.php).
Les valeurs enregistrées depuis la page des paramètres remplacent ces valeurs par défaut.
Le détecteur n'est jamais injecté dans les pages du panneau d'administration, les pages d'installation/de mise à niveau,
les réponses AJAX/JSON, ni les réponses dépourvues de balise fermante </body>.
Admin : Paramètres
La page des paramètres est accessible dans Panneau d'administration → Add-ons → Détecteur de bloqueur de pub.
Son affichage requiert la permission admin.setting.view et son enregistrement la permission
admin.setting.edit. La page comporte deux onglets.
Paramètres généraux
- Activer la détection de bloqueur de publicités : Active ou désactive le détecteur globalement.
- Délai de détection (ms) : Durée d'attente avant de lancer la détection (100–5000 ms). Des valeurs plus élevées réduisent les faux positifs mais retardent l'apparition de la superposition.
- Autoriser la fermeture : Lorsque cette option est activée, un bouton “Continuer quand même” apparaît sur la superposition, permettant aux utilisateurs de passer outre sans désactiver leur bloqueur de publicités. La fermeture ne vaut que pour la page affichée : la superposition réapparaît à la page suivante si le bloqueur est toujours actif.
- Ignorer les robots et crawlers (activé par défaut) : Les moteurs de recherche, crawlers et agents IA connus ne reçoivent jamais la superposition, afin que vos pages restent indexables.
- Ignorer les utilisateurs connectés : La superposition n'est jamais affichée aux utilisateurs authentifiés. Cela inclut déjà les administrateurs.
- Ignorer les administrateurs : La superposition n'est jamais affichée aux utilisateurs ayant le statut administrateur ou le rôle admin. Cette option est masquée tant que Ignorer les utilisateurs connectés est activé, puisque ce dernier couvre déjà les administrateurs.
Texte personnalisé
Vous pouvez définir un Titre personnalisé et un Message personnalisé pour la superposition, par langue. Un sélecteur de langue vous permet de saisir le texte pour chaque langue de votre site. Laissez les champs vides pour utiliser les traductions par défaut des fichiers de langue de l'add-on.
Routes
| Méthode | URL | Nom | Permission |
|---|---|---|---|
| GET | /admin/adsblockerdetector/settings |
admin.adsblockerdetector.settings.index |
admin.setting.view |
| PUT | /admin/adsblockerdetector/settings |
admin.adsblockerdetector.settings.update |
admin.setting.edit |
Le préfixe /admin suit le chemin de base de votre panneau d'administration.
Interface de la superposition
Lorsqu'un bloqueur de publicités est détecté, une superposition modale plein écran apparaît avec :
- Un fond sombre semi-transparent couvrant toute la fenêtre d'affichage (z-index 99999).
- Une boîte de dialogue blanche centrée avec une icône de bouclier.
- Un titre configurable (par défaut : “Bloqueur de publicités détecté”).
- Un message configurable expliquant pourquoi les bloqueurs de publicités doivent être désactivés.
- Des instructions pas à pas pour désactiver le bloqueur de publicités.
- Un bouton principal “Je l’ai désactivé” qui relance la détection.
- Un bouton de fermeture optionnel “Continuer quand même” (si
allow_dismissest activé).
La superposition bloque le défilement de la page en ajoutant une classe .abd-locked à <body>.
Tout le style est inline (aucune requête CSS externe) et la superposition est entièrement responsive.
Accessibilité
role="dialog"sur l'élément de superpositionaria-labelledby="abdTitle"lié au titrearia-modal="true"pour les lecteurs d'écranaria-hidden="true"sur les éléments appâts- Le contraste des couleurs respecte les normes WCAG AA
Mise à jour
Une mise à jour ne remplace que les fichiers de l'add-on. Ses tables et ses données, ses paramètres, son état d'activation et son code d'achat enregistré sont tous conservés : ne désactivez et ne supprimez pas l'add-on avant de le mettre à jour. Sauvegardez tout de même votre base de données au préalable.
Méthode 1 : Téléverser la nouvelle version (recommandé)
- Téléchargez le dernier fichier
.zipde l'add-on. - Allez dans Panneau d'administration → Extensions → Add-ons et cliquez sur Téléverser un add-on.
- Déposez le fichier
.zipdans la zone de téléversement. - Comme Ad Blocker Detector est déjà installé, une demande de confirmation affiche la version installée et la nouvelle. Cliquez sur Remplacer : le dossier
extensions/addons/adsblockerdetector/est remplacé par les nouveaux fichiers. Annuler la demande abandonne le téléversement.
Méthode 2 : Remplacer les fichiers à la main
- Par FTP ou SSH, supprimez le dossier
extensions/addons/adsblockerdetector/et envoyez le nouveau à sa place. Remplacez le dossier entier plutôt que de copier par-dessus, afin que les fichiers retirés par la nouvelle version ne subsistent pas. - Ouvrez Panneau d'administration → Extensions → Add-ons : la page relit
addon.jsonet la carte affiche le nouveau numéro de version.
Une fois les fichiers remplacés
Si votre installation met en cache sa configuration ou ses routes (php artisan config:cache, route:cache), exécutez php artisan optimize:clear après la mise à jour.
Désinstallation
Éteindre un add-on sans rien perdre, c'est le désactiver : allez dans Panneau d'administration → Extensions → Add-ons, cliquez sur Désactiver sur la carte Ad Blocker Detector et confirmez.
- L'add-on n'est plus chargé : ses routes, ses vues, son entrée dans la barre latérale d'administration et ses pages publiques ne répondent plus.
- Ses tables de base de données et toutes les données qu'elles contiennent sont conservées, et ses fichiers restent dans
extensions/addons/adsblockerdetector/. Rien n'est supprimé. - Ses permissions et son code d'achat enregistré restent en base de données. Seule la suppression les efface.
- La désactivation est refusée tant qu'un autre add-on actif dépend de celui-ci : désactivez d'abord cet add-on.
Cliquez sur Activer sur la même carte pour le rallumer. Comme lors de la première activation, le code d'achat est redemandé et vérifié ; ensuite les migrations en attente sont exécutées, les assets republiés, et l'add-on reprend exactement là où il s'était arrêté.
Suppression
La suppression est définitive et détruit les données de l'add-on. Le bouton Supprimer n'apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :
- Désactivez Ad Blocker Detector (voir Désinstallation).
- Cliquez sur Supprimer sur sa carte et confirmez la demande.
Le panneau d'administration, en une seule passe :
- exécute le hook de désinstallation de l'add-on, s'il en fournit un, tant que son code est encore sur le disque ;
- révoque les permissions déclarées dans son
addon.json; - annule ses migrations, ce qui supprime ses tables de base de données et toutes les lignes qu'elles contiennent, et purge ses entrées de la table
migrations, afin qu'une réinstallation ultérieure reparte de zéro ; - supprime ses assets publiés :
public/addons/adsblockerdetector/,public/vendor/adsblockerdetector/etstorage/app/public/addons/adsblockerdetector/; - supprime le dossier de l'add-on
extensions/addons/adsblockerdetector/; - supprime sa ligne dans la table
addons(le code d'achat enregistré disparaît avec elle) et vide le cache de l'application.
La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l'add-on est encore actif, lorsqu'un autre add-on actif en dépend, ou lorsque l'utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/adsblockerdetector/. Dans ce dernier cas, donnez à cet utilisateur le droit d'écriture sur le dossier et sur son parent, puis réessayez.
Supprimer le dossier en FTP ou en SSH n'est pas équivalent : l'add-on est seulement éteint, et ses tables, ses entrées dans la table migrations et sa ligne addons restent en place. Utilisez plutôt Supprimer dans le panneau d'administration.
Dépannage
La superposition n'apparaît jamais
- Vérifiez que l'add-on est activé dans Panneau d'administration → Extensions → Add-ons.
- Vérifiez que Activer la détection de bloqueur de publicités est activé dans les paramètres de l'add-on.
- Si vous testez en étant connecté, vérifiez que Ignorer les utilisateurs connectés (ou Ignorer les administrateurs pour un compte administrateur) est désactivé, ou testez dans une fenêtre de navigation privée.
- Lorsque Ignorer les robots et crawlers est activé, les navigateurs ou outils de test qui envoient un User-Agent de robot ou vide ne reçoivent jamais la superposition.
- Assurez-vous de tester avec un bloqueur de publicités installé et activé.
- Essayez de réduire le
detection_delayà 100 ms pour les tests. - Vérifiez la console du navigateur pour des erreurs JavaScript.
Faux positifs (la superposition apparaît sans bloqueur de publicités)
- Augmentez le
detection_delay(essayez 1000 ms ou plus). - Vérifiez si votre Content Security Policy (CSP) bloque la requête fetch vers
/ads/ad-banner.js. - Un blocage au niveau réseau par des pare-feux d'entreprise ou des filtres DNS peut provoquer des faux positifs.
La superposition apparaît sur les pages d'administration
- Cela ne devrait pas se produire. Le middleware exclut les routes d'administration. Si cela arrive, vérifiez que
isAdminPanelRoute()est correctement défini dans les helpers du cœur de l'application.
Le bouton “Je l’ai désactivé” ne fonctionne pas
- Le bloqueur de publicités est peut-être encore actif. Le détecteur crée de nouveaux éléments appâts à chaque nouvelle vérification.
- Certains bloqueurs de publicités nécessitent un rechargement complet de la page après désactivation. Le détecteur rechargera la page une fois la nouvelle vérification réussie.