Détectez les extensions de navigateur bloquant les publicités et affichez une fenêtre modale en plein écran invitant les visiteurs à les désactiver avant de continuer à naviguer sur votre site.
Double détection
Utilise à la fois la détection par filtre cosmétique DOM et la détection de blocage de requêtes 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 fenêtre, et personnalisez le texte affiché par langue.
Injection automatique
Un middleware global injecte automatiquement le détecteur dans toutes les pages front-end : aucune modification de template nécessaire.
Personnalisation du thème
Les thèmes peuvent fournir leur propre design de fenêtre de détection en remplaçant la vue par défaut.
Cas d’utilisation
Site financé par la publicité
Votre site dépend des revenus publicitaires. Lorsqu’un visiteur a un bloqueur de publicités activé, la fenêtre apparaît et l’invite à le désactiver. Vous pouvez bloquer tout accès jusqu’à ce qu’il obtempère ou lui permettre de fermer la fenêtre et de continuer.
Modèle freemium avec publicités
Les utilisateurs gratuits voient les publicités, les utilisateurs premium non. Utilisez le détecteur pour imposer l’expérience publicitaire aux visiteurs du niveau gratuit, tandis que les utilisateurs premium ne sont pas affectés (intégration avec les vérifications de rôles/permissions).
Conformité éditeur
Les régies publicitaires exigent un nombre minimum d’impressions. Le détecteur permet de s’assurer que vos emplacements publicitaires sont effectivement affichés et visibles par les visiteurs.
Prérequis
- Larapen CMS v1.0.0 ou ultérieur
- PHP 8.3+
- Aucune dépendance externe : l’add-on est entièrement autonome
settings du système principal.
Installation
Étape 1 : Téléverser l’add-on
Dans le panneau d’administration, allez dans Admin → Extensions → Add-ons et cliquez sur le bouton Téléverser un add-on. Sélectionnez le fichier ZIP de l’add-on : le système le décompresse automatiquement et l’add-on apparaît dans la liste des add-ons installés.
Étape 2 : Activer l’add-on
Repérez Détecteur de bloqueur de publicités dans la liste et cliquez sur Activer. Ses migrations, ses seeders (le cas échéant) et ses permissions sont mis en place automatiquement.
Étape 3 : Configurer
Naviguez vers Admin → Détecteur de bloqueur de publicités pour configurer le comportement de détection et le message affiché aux visiteurs. Voir Configuration.
Code d’achat (clé de licence)
Détecteur de bloqueur de publicités 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 Détecteur de bloqueur de publicités dans Panneau d’administration → Add-ons.
Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d’achat dépend de l’endroit où vous avez acheté le produit.
| Plateforme / Marketplace | Comment obtenir le code d’achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Shop) |
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail — soit dans un e-mail de licence dédié, 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 devient 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 — acheter 3 unités donne 3 clés distinctes).
- Elle est envoyée par e-mail à l’adresse utilisée pour 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 afficher 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 sur Gumroad produit deux e-mails distincts : 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. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonctionnalité de clés 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 fournis par Envato Market, jamais envoyés par e-mail par nous — il n’y a donc rien à chercher dans votre dossier de 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 sont gérés dans Admin → Détecteur de bloqueur de publicités (stockés dans la
table settings, groupe adsblockerdetector).
| Paramètre | Description | Par défaut |
|---|---|---|
adsblockerdetector_enabled |
Activer ou désactiver la détection de bloqueur de publicités globalement | true |
adsblockerdetector_detection_delay |
Délai en millisecondes avant la vérification des bloqueurs de publicités (100–5000) | 300 |
adsblockerdetector_allow_dismiss |
Si les utilisateurs peuvent fermer la fenêtre sans désactiver leur bloqueur de publicités | false |
adsblockerdetector_title |
Titre personnalisé de la fenêtre par langue (JSON). Laissez vide pour utiliser la traduction par défaut. | vide |
adsblockerdetector_message |
Message personnalisé de la fenêtre par langue (JSON). Laissez vide pour utiliser la traduction par défaut. | vide |
Les valeurs par défaut proviennent du fichier de configuration config/adsblockerdetector.php. Les paramètres de la base de données
remplacent les valeurs par défaut de la configuration.
Admin : Paramètres
La page des paramètres est accessible dans Admin → Détecteur de bloqueur de publicités
(route : admin.adsblockerdetector.settings.index).
Paramètres généraux
- Activer la détection de bloqueur de publicités : Activer ou désactiver le détecteur globalement.
- Délai de détection (ms) : Temps d’attente avant d’exécuter la détection (100–5000ms). Des valeurs plus élevées réduisent les faux positifs mais retardent l’apparition de la fenêtre.
- Autoriser la fermeture : Lorsque cette option est activée, un bouton “Continuer quand même” apparaît sur la fenêtre, permettant aux utilisateurs de continuer sans désactiver leur bloqueur de publicités.
Texte personnalisé
Vous pouvez définir un titre et un message personnalisés pour la fenêtre, par langue. Un sélecteur de langue vous permet de saisir du texte pour chaque langue active. 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 |
adsblockerdetector.settings.view |
| PUT | /admin/adsblockerdetector/settings |
admin.adsblockerdetector.settings.update |
adsblockerdetector.settings.edit |
Interface de la fenêtre
Lorsqu’un bloqueur de publicités est détecté, une fenêtre modale en plein écran apparaît avec :
- Un fond semi-transparent sombre couvrant l’ensemble de 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 étape par étape pour désactiver le bloqueur de publicités.
- Un bouton principal “Je l’ai désactivé” qui relance la détection.
- Un bouton optionnel “Continuer quand même” pour fermer (si
allow_dismissest activé).
La fenêtre verrouille le défilement de la page en ajoutant une classe .abd-locked à <body>.
Tout le style est en ligne (pas de requêtes CSS externes) et la fenêtre est entièrement responsive.
Accessibilité
role="dialog"sur l’élément de la fenêtrearia-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
Il existe deux façons de mettre à jour cet add-on : depuis le panneau d’administration (recommandé) ou en remplaçant manuellement les fichiers.
Méthode 1 : Téléversement depuis le panneau d’administration (recommandé)
- Téléchargez le dernier fichier
.zipde cet add-on. - Allez dans Panneau d’administration → Add-ons et cliquez sur le bouton Téléverser.
- Sélectionnez ou glissez le fichier
.zipdans la zone de téléversement. - Une demande de confirmation affichera les numéros de version actuel et nouveau. Cliquez sur Remplacer pour continuer.
- Allez dans Panneau d’administration → Mise à jour du système (
/admin/update) pour appliquer les migrations de base de données en attente.
Méthode 2 : Remplacement manuel des fichiers
Étape 1 : Remplacer les fichiers
Remplacez le dossier adsblockerdetector par la nouvelle version (ou tirez la dernière version si vous utilisez un lien symbolique).
Étape 2 : Vider les caches
php artisan config:clear
php artisan route:clear
php artisan view:clear
Étape 3 : Vérifier
Visitez une page front-end (pas l’admin) et confirmez que le détecteur fonctionne comme prévu. Vérifiez dans Admin → Détecteur de bloqueur de publicités que les paramètres sont intacts.
Désinstallation
Éteindre un add-on sans rien perdre, c’est le désactiver : allez dans Panneau d’administration → Add-ons, trouvez Ad Blocker Detector et cliquez sur Désactiver.
- Ses routes, ses vues, ses entrées de menu d’administration et ses permissions cessent d’être enregistrées, 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é. - Le code d’achat enregistré lors de l’activation est conservé lui aussi : réactiver l’add-on ne le redemande pas.
- 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. Les migrations en attente sont rejoué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 : les tables de l’add-on, ses entrées dans la table migrations et sa ligne addons restent en place, et sa carte reste dans la liste. Utilisez plutôt Supprimer dans le panneau d’administration.
Dépannage
La fenêtre n’apparaît jamais
- Vérifiez que l’add-on est activé dans Admin → Add-ons.
- Vérifiez que
adsblockerdetector_enabledest défini sur true dans les paramètres. - Assurez-vous de tester avec un bloqueur de publicités installé et activé.
- Essayez de réduire le
detection_delayà 100ms pour les tests. - Vérifiez la console du navigateur pour les erreurs JavaScript.
Faux positifs (la fenêtre apparaît sans bloqueur de publicités)
- Augmentez le
detection_delay(essayez 1000ms ou plus). - Vérifiez si votre politique de sécurité du contenu (CSP) bloque la requête fetch vers
/ads/ad-banner.js. - Le blocage au niveau réseau par les pare-feu d’entreprise ou les filtres DNS peut déclencher des faux positifs.
La fenêtre apparaît sur les pages d’administration
- Cela ne devrait pas se produire. Le middleware exclut les routes d’administration. Si c’est le cas, vérifiez que
is_admin_panel_route()est correctement défini dans les helpers du système principal.
“Je l’ai désactivé” : le bouton ne fonctionne pas
- Le bloqueur de publicités est peut-être encore actif. Le détecteur crée de nouveaux éléments appâts lors de la revérification.
- Certains bloqueurs de publicités nécessitent un rechargement complet de la page après la désactivation. Le détecteur rechargera la page une fois la revérification réussie.