Google Adsense Werbung positionieren

Google Adsense Werbung positionieren

Positionierung

Für devindie hab ich eine Funktion entwickelt mit der man die von Google Adsense bereitgestellte Werbung besser positionieren kann. Ich verwende PHP um die Werbung serverseitig zu positionieren und somit zu verhindern, dass es Probleme mit Auto-Ads geben könnte. Die Funktion tut nichts anderes als die Länge des Artikeltexts zu nehmen und dann die Werbung ungefähr an die gewünschte prozentuale Position zu setzen.

getTextPosition($text, $percent)

Mit dieser Funktion werden wir am Ende eine gewünschte prozentuale Position im Text erhalten. Diese Methode um Werbung zu positionieren ist nicht perfekt, da nicht mit der Texthöhe sondern mit der Textlänge gearbeitet wird. Nichtsdestotrotz liefert es ein besseres Ergebnis, als einfach nach der x-ten Überschrift eine Werbung zu platzieren. Die folgende Version dieser Funktion positioniert die Werbung wenn nötig mitten in einem Satz, das hat mir persönlich nicht gefallen. Aber für das Verständnis interessant:

function getTextPosition($text, $percent)
{
// Bei Leerzeichen und Zeilenumbrüchen splitten
$words = preg_split("( |\n)", $text);
$wordPos = floor((count($words) / 100) * $percent);
$pos = 0;

for($i = 0; $i < $wordPos; ++$i)
{
// +1 => entfernte Leerzeichen/Umbrüche => preg_split
$pos += strlen($words[$i])+1;
}

return $pos;
}

Ein weiteres Problem ist hier, dass die Werbung auch mitten in einem ungünstigen Tag positioniert werden könnte. Die bessere und empfehlenswerte Funktion ist also die folgende.

function getTextPosition($text, $percent)
{
$words = preg_split("( |\n)", $text);
$wordPos = floor((count($words) / 100) * $percent);
$posBefore = 0;
$posAfter = 0;
$after = false;
$realPos = 0;
$pos = 0;

// Prüfen welcher gewünschte Tag (h2,h3,p) näher zu wordPos ist
// Ist es näher vor der gewünschten prozentualen Position oder danach?
for($i = 0; $i < count($words); ++$i)
{
// +1 = nicht die entfernten Leerzeichen/Umbrüche vergessen
$pos += strlen($words[$i]) + 1;

if($i >= $wordPos)
{
$after = true;
}

if(strpos($words[$i], "</h2>") !== false ||
strpos($words[$i], "</h3>") !== false ||
strpos($words[$i], "</p>") !== false)
{
if($after == false)
$posBefore = $pos;
else if($posAfter == 0)
$posAfter = $pos;
}

if($i <= $wordPos) $realPos += strlen($words[$i]) + 1;
}

// Die mögliche Position vor der eigentlich gewünschten, 
// ist näher als die mögliche Position die nach 
// der geforderten Position kommt.
// Beispiel:
// <p>Das ist ein Test.</p>*<p>#Bestanden.</p>^
// Die gewünschte Position ist an #
// Die mögliche Position vor dem # ist bei *
// Die mögliche Position nach der gewünschten (#) ist bei ^
// * ist näher an #, also die Werbung bei * positionieren
if($realPos - $posBefore < $posAfter - $realPos)
{
return $posBefore;
}

return $posAfter;
}

Diese Version positioniert die Werbung immer nach/vor einer Überschrift oder einem Absatz. Somit landet die Werbung nicht innerhalb Tags und auch nicht mehr mitten in einem Satz.

Die Funktion einsetzen

Um das ganze einzusetzen braucht man nur noch den Text, eine gewünschte Position und substr_replace.

$text = substr_replace($text, $adCode, getTextPosition($text, 80), 0);

Das fügt den Adsense Skript ungefähr an die gewünschte prozentuale Position (hier 80%) im Text hinzu.

Hinterlasse gerne einen Like oder Kommentar (~‾▿‾)~
Name Text