Pub Banner : gestionnaire de bannières publicitaires

Le plugin « PUB BANNER » est un gestionnaire complet de bannières publicitaires pour des squelettes SPIP. Il prend en charge tous les types de bannières et permet de leur attribuer des publicités (locales ou distantes, images ou Flash). Chaque publicité peut se voir attribuer un certain nombre d’affichages, de clics ou être affichée dans un intervalle de dates.

Il propose également une présentation de statistiques (nombres d’affichages et de clics par bannière et par publicité).

Installation

Installation automatique

Le plugin est disponible dans le fil RSS de chargement automatique de Spip-Contrib (onglet ’Ajouter des plugins’ de la page de gestion des plugins de l’espace privé).

Installation manuelle

Si vous préférez une installation manuelle, suivez les étapes suivantes :

  1. Téléchargez l’archive ’.zip’ de cette page vers le dossier de plugins de votre SPIP
  2. Installez le plugin depuis votre espace privé comme expliqué ici : http://www.spip.net/fr_article3396.html.

Pré-requis

Pour une raison pratique, PUB BANNER nécessite d’avoir installé au préalable le plugin ’SPIP Bonux’ en version 1.3 au minimum.

Notes

  • L’organisation du plugin a pris un tournant décisif pour sa version 1.25 (version des tables 0.8), notamment concernant les noms des tables en base de données. Pour plus d’information, voyez la note de version 1.24.

Fonctionnement/Utilisation

Lorsqu’il qu’il est activé, le plugin fait apparaître deux nouveaux boutons dans le bandeau de navigation de l’espace privé :

  • « Bannières publicitaires » dans le sous-menu « Edition »,
  • « Statistiques des publicités » dans le sous-menu « Statistiques ».

Ces bannières s’intègrent dans vos squelettes en indiquant simplement la balise :

#PUBBAN{banner_id}

Attention, l’option passée à la balise est bien l’entrée « banner_id » de la bannière, il est donc conseillé de définir cette valeur de façon simple et sans ambigüité (elle sera corrigée par le plugin le cas échéant) [1].

La balise est remplacée par une frame de la taille de la bannière dont les publicités sont choisies au hasard parmi celles affichables. Lors d’un clic sur une pub, la fenêtre courante ou une nouvelle fenêtre s’ouvre vers l’URL configurée (propre à chaque publicité).

Valeurs par défaut à l’installation

Des valeurs par défaut sont entrées dans les tables à l’installation, à savoir :

  • les quatre emplacements ’type’ les plus répandus sur le web :
    • skyscraper : la longue bannière verticale, de 160 ou 180 sur 600 pixels,
    • leaderboard : la longue bannière horizontale, de 728 sur 90 pixels,
    • banner : la bannière horizontale ’standard’, de 468 sur 60 pixels,
    • cube : le carré, de 250 sur 250 pixels, emplacement privilégié pour les encarts flash,
  • cinq exemples d’encart publicitaires, un pour chaque emplacement, deux pour la ’banner’, avec divers options quand à la limite d’affichage (nombre d’affichages, de clics et dates encadrantes).

Les publicités proposées pour les tests sont construites autour du fameux écureuil SPIP [2].

Statistiques

Comme précisé plus haut, des statistiques sont enregistrées pour analyse. Elles sont présentées sous forme de graphes permettant d’étudier d’une part le nombre d’affichages de chaque bannière, d’autre part le nombre de clics sur celles-ci. Un suivi d’évolution dans le temps est également proposé (cf. portfolio).

Des tableaux récapitulatifs sont également disponibles et exportables au format CSV.

Accessibilité

Les clics sur les bannières affichées en pages publiques ouvrent par défaut un nouvel onglet ou une nouvelle fenêtre de navigateur sans javascript [3]. Ces fenêtre ne sont donc pas bloquées par les réglages du navigateur, il s’agit simplement de liens avec l’attribut « target=blank », accessibles en toute circonstance.

Vous pouvez forcer l’utilisation d’une fonction Javascript en définissant la constante PUBBAN_FORCE_JAVASCRIPT sur 1 dans le fichier pubban_options.php.

Personnalisation CSS

Chaque frame présentant une bannière est contenue dans une div portant une classe nommée « pubban banniere_XX » où ’XX’ est le banner_id de la bannière concernée. Cela vous permet de personnaliser les styles des bannières de façon discriminante dans vos propres feuilles de style.

(in) Compatibilités

Le plugin est prévu pour s’intégrer dans tout type de squelette SPIP et notamment dans les squelettes Z (Le Squelette Zpip). Il est également compatible avec le plugin « Bandeau » : une navigation améliorée dans le privé depuis sa version 1.28.

Tous les squelettes utilisés par le plugin sont construits pour être autonomes et affichables dans toute situation. Cependant, lorsque vous utilisez le switcher de thèmes de SPIP Zen Garden, une erreur Javascript est renvoyée car la bibliothèque jQuery n’est pas chargée dans les frames présentant les encarts publicitaires ... Pas d’inquiétude, cette erreur ne pose aucun problème quant à l’affichage des bannières.

Aspects techniques

Le plugin créé deux nouveaux types d’objets SPIP : les bannières publicitaires et les publicités en elles-mêmes, correspondant aux images ou objets visibles sur les pages. Chaque publicité peut être attribuée à une ou plusieurs bannières et son affichage peut être limité par trois variables :

  • le nombre d’affichages,
  • le nombre de clics,
  • un intervalle de dates de validité.

Lorsqu’une publicité ne doit plus être affichée, elle est tout de même conservée en base et peut être récupérée pour une nouvelle campagne.

Deux nouvelles boucles apparaissent donc avec ce plugin : les boucles « BANNIERES » et « PUBLICITES », au sein desquelles vous pouvez utiliser les deux identifiants « id_publicite » pour la publicité et « id_banniere » pour la bannière (très original ...).

Comme tous les objets de SPIP, vous devez d’abord créer une pub ou une bannière puis l’activer pour qu’elle soit effectivement visible ... Cela permet par exemple de créer une pub puis de la modifier avant une mise en ligne définitive. Vous pouvez bien entendu visualiser un exemple de chaque pub même si elle est désactivée.

La mécanique PHP

J’ai tenté d’inclure au plugin un certain nombre de vérifications de sécurité. Par exemple, le système vous préviendra si vous créez une pub qui redirige vers une URL qui n’existe pas. Ces vérifications inscrivent un message d’erreur à l’écran mais proposent de forcer leur validation par une nouvelle soumission du formulaire.

Les modifications sur la base

Le plugin ajoute quatre nouvelles tables à SPIP :
-  ’spip_bannieres’ : la table des bannières,
-  ’spip_publicites’ : la table des encarts publicitaires,
-  ’spip_publicites_bannieres’ : une table de jointure bannière/publicités,
-  ’spip_pubban_stats’ : une table retenant les statistiques des encarts (nombres de clics, d’affichages ...).

Lors de la désinstallation du plugin, un mécanisme de sécurité interdit l’effacement des tables si celles-ci ne sont pas vides ... Vous pouvez forcer cet effacement, notamment en phase de tests, en définissant la constante PUBBAN_FORCE_UNINSTALL sur 1 dans le fichier « pubban_options.php ».

Notes de version

Version 1.24

Le plugin a été largement revu entre les versions 1.23 et 1.24. Les tables de la base ont notamment été renommées, afin, comme indiqué plus haut, de s’intégrer plus naturellement dans la nomenclature de SPIP.

Un mécanisme automatique de mise à jour est prévu dans le plugin. Cette migration devrait donc être invisible si vous passez d’une version antérieure à 1.24 vers une version supérieure, mais il est possible, pour plusieurs raisons (notamment si vous utilisez un préfixe de tables personnalisé) que cette migration vous fasse perdre vos données.

Si vous rencontrez des problèmes lors de cette migration, voici les étapes à suivre pour l’effectuer manuellement :

  1. désactivez le plugin dans sa version supérieure ou égale à 1.24 sans le désinstaller,
  2. effacez manuellement les nouvelles tables de votre base de données, à savoir (avec PREFIX votre préfixe de tables, par défaut ’spip’) :
    • PREFIX_publicites
    • PREFIX_bannieres
    • PREFIX_bannieres_publicites
  3. recherchez dans la table ’PREFIX_meta’ le méta ayant pour nom ’pubban_base_version’ et modifiez sa valeur pour qu’elle soit inférieure à 0.8,
  4. renommez manuellement les tables de la façon suivante :
    • PREFIX_pubban_publicites’ vers ’PREFIX_publicites
    • PREFIX_pubban_emplacements’ vers ’PREFIX_bannieres
    • PREFIX_pubban_pub_empl’ vers ’PREFIX_bannieres_publicites
  5. installez le plugin en version supérieure ou égale à 1.24 de façon classique.

Et le tour est joué !

À côté / Pistes d’évolution

« TODOS »

-  uniformiser avec les tables SPIP
-  permettre de suivre les statistiques pour les pubs et plus seulement les bannières

Achat d’encarts

Le code du plugin est prévu pour permettre de proposer d’acheter des emplacements (des tranches de prix sont configurées). Cette fonctionnalité fera probablement l’objet d’un nouveau plugin ...

Notes

[1A noter que cette fonctionnalité est apparue dans le plugin à partir de sa version 1.25. Avant celle-ci, le titre était utilisé en lieu et place de l’entrée « banner_id », ce qui générait pas mal d’erreurs ...

[2Un peu d’indulgence ... je ne suis pas graphiste !

[3Depuis la version 1.27 du plugin.

La page de statistiques du plugin est une adaptation libre du script ’VRG pub’ développé par Vincent Roseberry (sous licence GPL à l’époque).

Discussion

45 discussions

  • 2

    J’ignore si c’est spécifique à mon installation (en plus je suis sous 3.1), mais l’utilisation d’adresse en https dans le champs « URL de redirection (au clic) » d’une publicité génère une erreur 404.
    Cela fait pointer la publicité vers http://www.urlmonsite.fr/spip.php?page=https%3A%2F%2Fwww.urldedestination.fr%2F ce qui provoque une erreur.

    • Laëtitia

      Bonjour Gaël,

      j’ai le même problème, avez-vous trouvez une solution depuis ?

      Laëtitia

    • Le plugin n’est pas compatible avec les liens en https. Si la redirection http->https fonctionne sur le site cible, renseignez l’adresse avec http://...

    Répondre à ce message

  • Pour afficher un encart publicitaire seulement si elle contient une publicité active :

    <BOUCLE_pub(PUBLICITES bannieres_publicites){id_banniere=mon_identifiant}>
    </BOUCLE_pub>
    	[<section id="pub" class="row">(#PUBBAN{mon_identifiant})</section>]
    </B_pub>

    Répondre à ce message

  • 5

    Bonjour,

    Sous SPIP 3.2, et la dernière version du plugin, j’ai 2 erreurs :
    1) A « Redirection vers nouvelle fenêtre », le bouton radio revient systématiquement sur « oui »
    2) l’URL de redirection vers « www.publicite.com/ » ne fonctionne pas : Un message s’affiche : « Aucun squelette https://www.publicite.com/.html n’est disponible... »

    Erreur de ma part ou problème dans la version dernière du plugin ?

    Merci pour votre aide,
    Bon weekend

    • le plugin impose d’insérer le protocole http:// et bugge si on met https. Heureusement, si on a bien son certificat ssl sur le serveur de destination, une url en http est automatiquement renvoyée sur l’url https

    • Bonjour Guilaind,

      Merci pour ta réponse. Mais si je comprends bien, il n’est pas réellement conseillé de continuer avec ce plugin si on veut s’orienter vers une solution stable et fiable. Je vais de ce pas jeter un coup d’oeil sur Revive AdServer... Qu’on pourrait rendre « SPIPien » ?

    • Salut Beno. Je ne connais pas tes besoins ni tes connaissances techniques et serai bien présomptueux de te dire quoi faire.

      Néanmoins Revive permet de faire plein de choses que PUBBAN ne permet pas de faire.

      Depuis que j’ai arrêté d’utiliser PUBBAN ma charge CPU/RAM/MySql est retombée à un usage normal + mon temps de chargement s’est amélioré + temps de chargement des pub s’est énormément amélioré : affichage quasi simultané alors qu’avant j’étais à 3/4 secondes de décalage pour la 1re bannière + la rotation des bannières est réelle/régulière et réellement à la durée des gif animés

      Si un plugin faisait le pont Spip-Revive alors oui ça serait sympa : par exemple avec Revive je paramètre facilement un pavé que j’insère dans certaines pages et dans ce pavé je fais tourner du html : texte, images... avec la possibilité de régler un ordre de priorité, le max d’affichage par session, etc... J’imagine un plugin qui, si on active la fonction sur un article, enverrait automatiquement à Revive le contenu html à afficher dans l’encart et vice-versa insérer ce bloc facilement dans un article

      Quant aux stats d’affichage et clics des bannières, j’ai enfin une stat fiable et qui colle avec mes stats Piwik. Je vais enfin pouvoir vendre certains emplacements au CPM sans avoir la sensation d’arnaquer mes clients et surtout en permettant de régler finement ces affichages

      ATTENTION revive est en open source ce qui veut dire que certaines fonctionnalités demandent d’acheter un plugin. j’ai acheté un de ceux qui permet de rafraichir une bannière tous les X secondes et permettre la rotation

      La seule chose que je regrette est de ne pas avoir passé le temps à essayer revive plus tôt alors que je connais la solution depuis un certain temps. Cherche les tutoriels vidéo à propos de Revive/OpenX et avec eux tu vas comprendre la logique.

    • liberté

      Bonjour,

      Avez-vous lu la discussion dans carnet wiki ?

      pub-banner et campagnes - comparaison et compléments

      Le plugin Campagnes correspond-il aux besoins ?

    • Merci liberté

      Non je n’avais pas vu cette discussion.

      Grâce à ta contribution ici même, il y a désormais une mention de cette initiative sur la page du présent plugin. C’est vraiment dommage que personne n’ait pensé à le faire plus tôt

      En l’absence de doc, c’est difficile d’évaluer la profondeur du plugin Campagnes.
      Il y a qq semaines, je m’en serai peut être satisfait

    Répondre à ce message

  • J’ai fini par jeter l’éponge de ce plugin qui aurait pu être génial mais bugge dans tous les sens. Je remercie les concepteurs du plugin, néanmoins il semble qu’ils aient arrêté de le faire évoluer avec le temps.

    Pour ceux qui ont besoin d’afficher de la pub sans être développeur, j’ai installé sur un serveur la solution open source Revive AdServer (ex OpenX) :

    • installation très facile
    • premiers paramétrages faciles
    • mise en place de la 1re bannière pas facile au 1er abord, néanmoins des tutoriels existent sur le net

    Et j’en suis très content car on a accès à une multitude de formats IAB ou non, à du html/html5, etc...

    Répondre à ce message

  • Bonjour,

    Mes logs d’erreur disent ceci :

    AH01071: Got error 'PHP message: PHP Warning: Missing argument 1 for balise_CLIC_BANNIERE_dyn(), called in XXX/ecrire/public/evaluer_page.php(51) : eval()'d code on line 4 and defined in XXX/plugins/auto/pub_banner_s3/balise/clic_banniere.php on line 16n'

    Détails techniques :
    SPIP 3.2.0 [23778] écran de sécurité 1.3.2
    Pub Banner 1.30.7 - test
    PHP Version 7.0.27
    Serveur Apache
    Mysql 5.5.59-0ubuntu0.14.04.1

    Quelqu’un aurait une piste ? Je ne suis pas développeur : j’ai appris les boucles Spip mais ne capte rien en php

    Répondre à ce message

  • 2

    Bonjour,

    avec SPIP 3.1.4 et la version du plugin téléchargé voici 10 minutes, le plugin ne s’affiche pas dans les options d’activation... mais semble fonctionner quand on change le paquet.xml

    Maintenant, question : si on veut faire un encart qui est dirigé vers une page interne au site (par exemple vers l’article430...), peut-on le faire, et si oui comment fait-on ?
    Merci

    • Salut beno,

      Oui, effectivement, le plugin est toujours en [3.0.10;3.0.*] donc considéré comme incompatible avec SPIP 3.1... Si une âme charitable voulait bien modifier le paquet.xml sur le dépôt ........

      Merci !

    • Bonjour,

      je reviens sur cette question de permettre un lien interne (article1 ou rubrique 2 par exemple). Est-ce possible de prévoir une telle fonction ?

    Répondre à ce message

  • 2

    Bonjour,

    j’utilise SPIP 3.2, j’ai installé SPIP Bonux 3.4.6 puis Pub Banner 1.30.7 et aucune publicité n’est affichée avec le code #PUBBANbanner_id dans les squelettes.
    Pas d’erreur sql, pas de bug, juste rien du tout.
    Une idée du problème ?

    merci

    • Tout bêtement que le plugin n’est pas compatible 3.2 ???

    • C’est bon en fait cela fonctionne !
      Il suffisait de remplacer banner_id par le titre donné à la bannière.....
       ;-)

    Répondre à ce message

  • Je ne comprends pas comment ajouter une bannière. Dois-je d’abord l’uploader quelque part, puis récupérer son adresse, avant d’utiliser ce plug-in ?

    Répondre à ce message

  • 1

    Bonjour,
    Je voudrais faire remonter un petit bug ballot ; : quand on édite une bannière, le bouton « Redirection dans une nouvelle fenêtre » passe automatiquement sur Oui...

    Au passage, et dans un soucis d’harmonisation, une amélioration pourrait être apportée avec la possibilité de pointer directement sur un article sans passer par « page= », du genre « article237 » ou « rubrique3 ».

    • Oups, oublié le préalable : SPIP 3.0.19 avec plugin mis-à-jour)

    Répondre à ce message

  • 1

    Bonjour,

    j’ai une fenêtre d’erreur avec ce message. Que faut il faire pour le corriger ?

    merci

    Erreur SQL 1054
    Unknown column ’page’ in ’where clause’
    SELECT * FROM spip_pubban_stats WHERE date IN (’2016-04-14’) AND id_banniere=4 AND page=’./’

    • J’ai rajouté la colonne « page » à la main dans spip_pubban_stats et cela a résolu le problème de l’erreur. Par contre les statistiques ne semblent pas fonctionner

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom