Intégrer de la publicité automatiquement dans un texte

WRInaute accro
Bonjour à toutes et à tous,

Un petit post pour expliquer de façon un peu technique une optimisation qui peut rapporter :) Comme tout le monde le sait, il est plus intéressant de placer de la publicité au sein même du contenu, qu'au bas de ce même contenu. Mais pour certains contenus, cette tache peut s'avérer ardue si elle est faite manuellement, notamment pour les contenus mis en base et pour les contenus nombreux. Modifier 30 textes oui... modifier 2000 textes... euh non.
Alors il s'agit d'une solution mais en aucun cas de la meilleure solution, suis pas assez bon pour ca.

Prenons un exemple simple :
-http://www.edubourse.com/finance/actualites.php?actu=48033

La publicité en 250x250 est bien placée au milieu du texte, et non en bas. Ai-je pour autant ajouter la publicité à la main et ce pour des milliers de pages ? bien sur que non. Il m'a suffit de découper mon contenu de façon automatique.

La méthode que je donne n'est surement pas la meilleure (suis loin d'être doué en programmation) mais elle a le mérite de fonctionner.

>>> Etape : 1 : déterminez une longueur minimale de votre texte

Pour bien s'intégrer votre publicité doit se trouver au sein d'un texte relativement long. Autant le placer totalement en bas à coté des commentaires si le texte est trop petit pour l'accueillir correctement, comme ici :
-http://www.edubourse.com/finance/actualites.php?actu=46602

Pour ma part, j'ai choisi de me fixer un contenu d'un minimum de 3.000 caractères. Si le texte dépasse les 3.000 caractères, j'intègre de la publicité au sein du texte et donc je passe à l'étape 2.

>>> Etape 2 : Découpez votre contenu

Le contenu doit se scinder en plusieurs parties distinctes que vous devrez ensuite concaténer (ou raccrocher) pour que l'utilisateur ne s'apercoive de rien. Dans mon cas, j'ai choisi de placer la publicité aux alentours du 2.500ème caractère. Pour se faire, j'ai découpé mon texte de la position 0 à la position 2.500 via un simple "substr".

Vous obtenez donc la première partie de votre texte, ou Contenu_1. Le code donne quelque chose comme ==> $Contenu_1 = substr($contenu, 0, 2500);

La deuxième partie est plus complexe à appréhender. Il s'agit d'une portion de texte situé entre la fin du contenu_1, et la fin du Contenu_2 représenté par un texte, une intervalle ou autre. J'ai choisi le premier saut de ligne détectée.

Pour se faire, un simple explode et je récupère uniquement la première partie du tableau. Une sorte de Contenu_2[0].

Le code :
$Contenu_2 = substr($contenu, 2500); <-- tout le contenu à partir du 2.500ème caractère
$Contenu_2 = explode ("<br/>", $Contenu_2); <-- Récupération du texte avant le premier saut de ligne
$Contenu_2[0] <-- le texte avant le premier saut de ligne

La récupération de la troisième et dernière partie est un jeu d'enfant. Il suffit de calculer la longueur du Contenu_2 ( $longueur_Contenu_2 = strlen($Contenu_2[0]); ), d'y ajouter la longueur du Contenu_1 (ici 2.500), et de rajouter les quelques caractères correspondants à un simple saut de ligne.

$laPosition = 2500 + $longueur_Contenu_2 + 1, 2, 3, etc.

Le Contenu_3 pourra alors être trouvé via un substr débutant à la position ainsi calculée.
$Contenu_3 = substr($contenu, $laPosition);

>>> Etape 3 : Concaténer les contenus

Une fois les contenus découpés, il suffit de les regrouper de façon classique par concaténation, et de ne pas oublier d'y intégrer de la publicité. Cela nous donne donc :

Contenu_Finale = "Contenu_1Contenu_2[0]<br/>Votre_PubliciteContenu_3"

Le nouveau contenu s'affiche donc avec la publicité où vous le
souhaitiez pour le plus grand plaisir de votre taux de clics :)

>>> Etape 4 : Peaufinez

Vous pouvez peaufiner en rajoutant des variables permettant notamment d'afficher une pub en bas de page si la longueur du contenu initial n'est pas suffisant, changer l'emplacement de la publicité (à droite ou à gauche), modifier l'emplacement en fonction de la longueur du contenu, etc.

Je ne sais pas si j'ai été clair, mais si vous avez des questions...

Bye bye
 
WRInaute occasionnel
Salut, c'est bien en effet d'intégrer la publicité dans l'article.

Une autre façon pour le même résultat est d'utiliser la fonction strpos qui permet de trouver la position d'une chaine de caracteres dans une chaine de caracteres, en commencant à partir du 2500ème caractere.
Donc en cherchant un retour a la ligne dans le contenu à partir du 2500eme caractere, il est ensuite facile de faire comme tu fais, directement.

Code:
// trouve la position du premier br apres le 2500eme caractere
$PositionBR = stripos($Contenu, "<br/>", 2500);
// met la premiere partie de contenu dans contenu_1 et la deuxieme partie dans contenu_2
$Contenu_1 = substr($Contenu, 0, $PositionBR-1);
$Contenu_2 = substr($Contenu, $PositionBR);
// le code html de la publicité a insérer dans le contenu
$Publicite = '<div style="float: left">CODE ADSENSE</div>';
// le contenu final est contenu_1 + contenu_2 dans lequel on remplace le br par la publicité
$Contenu_Final = $Contenu_1 . str_ireplace("<br/>", $Publicite, $Contenu_2, 1);

str_ireplace a 1 comme 4eme argument pour dire qu'il ne remplace que le premier br rencontré.

on est pas obligé de remplacer le br par la publicité, on pourrait simplement inserer la publicité comme tu le fais apres le br, mais il est moins difficile de remplacer directement meme si on doit recreer un saut de ligne dans le code de la pub, mais generalement la pub elle meme cree un saut de ligne, ne serait-ce que par un div qui l'entoure, ca permet de ne pas creer un saut de ligne supplémentaire inutilement.
 
WRInaute accro
En fait, même pas besoin de str_ireplace, il suffit de faire
$Contenu_2 = substr($Contenu, $PositionBR+5);
le +5 pour commencer après le <br />
et ensuite faire afficher $Contenu_1.$lapub.$Contenu_2
 
WRInaute occasionnel
C'est vrai Leonick, le str_ireplace est inutile il suffit de sauter directement le < br /> au moment de creer contenu_2.

il y a aussi la fonction substr_replace qui permettrait d'aller insérer directement le code de la publicité dans $contenu, en mettant 5 comme dernier paramètre pour virer le br, si on est sur que < br / > fait bien 5 caracteres, comme ça :
Code:
// trouve la position du premier br apres le 2500eme caractere
$PositionBR = stripos($Contenu, "<br/>", 2500);
// le code html de la publicité a insérer dans le contenu
$Publicite = '<div style="float: left">CODE ADSENSE</div>';
// remplace le premier < br /> apres le 2500eme caractere dans $Contenu par le code de la publicite 
$Contenu_Final = substr_replace($Contenu, $Publicite, $PositionBR, 5);

La c'est rapide :)
 
WRInaute passionné
Pour insérer de la publicité j'ai toujours pensé que le jour où j'en aurai besoin je tenterai un simple positionnement CSS.
Genre :
<div id="texte">
... Mon article sans aucune coupure ...
</div>
<div id="pub">
Code publicité
</div>

Et ensuite on joue à placer le #pub en float, le texte s'adaptant alors automatiquement au bloc.

Qu'en pensez-vous ? L'intérêt serait de ne pas avoir de traitement sur le texte et que celui-ci soit parfaitement lisible par tous les navigateurs et robots.
 
WRInaute occasionnel
Axiso ton histoire fonctionnerait si tu places :

<div id="pub">
Code publicité
</div>
<div id="texte">
... Mon article sans aucune coupure ...
</div>

en effet il faut que le div en float soit avant le texte, je ne sais meme plus si il faut pas plutot etre a l'interieur du div texte comme ca :

<div id="texte">
<div id="pub">
Code publicité
</div>
... Mon article sans aucune coupure ...
</div>

en tous les cas, l'objectif de cette discussion est d'insérer la pub a l'interieur du texte, non pas au debut ou a la fin comme c'est le cas dans ton commentaire, meme avec un float ca reste au debut de l'article.

Alors précision quand même je suis ZERO en CSS, donc si il y a une façon de placer un DIV en float où on veut en jouant sur les margins ou paddings et que le texte s'adapte autour, ben c'est une nouveauté pour moi car j'avais cherché et je n'avais trouvé finalement qu'une astuce consistant à placer un deuxieme DIV float avant le DIV float de la pub, pour faire descendre de X pixels la pub dans le texte.
 
WRInaute accro
oui, il faudrait, dans ce csa, un positionnement en absolute. En n'oubliant pas de mettre un positionnement sur le containeur parent
 
WRInaute impliqué
merci pour cette info, c'est vraiment une bonne idée, que j'avais vu sur certains sites, sans penser faire de même, car cela doit être mieux pour la rentabilisation !
 
WRInaute passionné
Leonick a dit:
oui, il faudrait, dans ce csa, un positionnement en absolute. En n'oubliant pas de mettre un positionnement sur le containeur parent

Si tu fais comme ça, le problème c'est que ta pub sera au dessus du texte. Le texte restera lui à sa place (comme si il n'y avait pas de pub).

J'avais déjà essayé de fouiller un peu de ce côté là également, mais j'ai jamais trouvé de solution.
 
Discussions similaires
Haut