PDA

Zobacz pełną wersję : TUTORIAL: Rozwiązanie problemu zliczania kliknięć przy bannerach .swf



souacz
06-08-2012, 21:59
Co prawda Joomla 1.5 trochę nieaktualna już ale jeszcze sporo osób używa.

Poniżej sposób na rozwiązanie problemu nie zliczania kliknięć przez bannerki w formacie flash plus sposób na automatyczną podmianę .swf na .gif w przypadku wejścia na stronę z systemów, które nie obsługują (lub kiepsko obsługują) flash np. iOS lub Android.

Rozwiązanie to oparte jest na FlashVars a dokładnie na parametrze clickTag, który będzie nam pomocny przy zliczaniu kliknięć. Parametr ten używany jest choćby we flashowych reklamach Google.

Tworząc plik flash należy wkleić następujący kod AS, na klatce głównej (root), np. w scene:


on (release) { if (clickTag.substr(0,5) == "http:") {
getURL(clickTag, "_blank");
}
}

Nie musi być to dokładnie taki kod, ważne żeby parametr "clickTag" użyty był właśnie w tej formie (nie "clickTAG" bądź "clicktag") bo nie będzie zgadzać nam się z kodem podmienionym w mod_banners o czym za chwilę. Ważne aby nie wpisywać żadnego adresu w kodzie animacji. Adres będzie pobierany z odpowiedniego pola w komponencie Reklama.

Oprócz powyższego pliku, przygotowujemy także plik .gif, który nazywamy tak samo jak plik .swf, dodajemy tylko rozszerzenie .gif, np. "mojbanner.swf" i "mojbanner.swf.gif", dokładnie w ten sposób. Plik .gif będzie wyświetlać się automatycznie na urządzeniach z systemami iOS, webOS i Android zamiast pliku .swf. Nie jest istotne czy będzie to plik animowany czy statyczny.

Teraz najważniejsza część - modyfikacja pliku odpowiadającego za wyświetlanie reklam w komponencie Reklama.

Przez ftp otwieramy do edycji następujący plik: /modules/mod_banners/helper.php
i szukamy następującego fragmentu kodu:


$html = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" border=\"0\" width=\"$width\" height=\"$height\"> <param name=\"movie\" value=\"$imageurl\"><embed src=\"$imageurl\" loop=\"false\" pluginspage=\"http://www.macromedia.com/go/get/flashplayer\" type=\"application/x-shockwave-flash\" width=\"$width\" height=\"$height\"></embed>
</object>

zamieniamy go na:


/* Stary kod $html = "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" border=\"0\" width=\"$width\" height=\"$height\">
<param name=\"movie\" value=\"$imageurl\"><embed src=\"$imageurl\" loop=\"false\" pluginspage=\"http://www.macromedia.com/go/get/flashplayer\" type=\"application/x-shockwave-flash\" width=\"$width\" height=\"$height\"></embed>
</object>";
*/


$html = "<div id='image$item->bid' style='display:none'><a href=".$link." target=\"_blank\"><img src=\"$imageurl.gif\"></a></div>


<div id='flash$item->bid' style='display:block'>
<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" border=\"0\" width=\"$width\" height=\"$height\">
<param name=\"movie\" value=\"$imageurl\">
<param name=\"wmode\" value=\"opaque\">
<param name=\"FlashVars\" value=\"clickTag=http://twojastrona.pl".$link."\"/>
<embed src=\"$imageurl\" pluginspage=\"http://www.macromedia.com/go/get/flashplayer\" type=\"application/x-shockwave-flash\" width=\"$width\" height=\"$height\" wmode=\"opaque\" FlashVars=\"clickTag=http://twojastrona.pl/".$link."\" ></embed>
</object>
</div>

<script language='javascript'>
if ((navigator.userAgent.match(/Android/i) != null) ||
(navigator.userAgent.match(/webOS/i) != null) ||
(navigator.userAgent.match(/iPad/i) != null) || (navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null)) { document.getElementById('image$item->bid').style.display = 'block'; document.getElementById('flash$item->bid').style.display = 'none'; }
</script>";

po czym wyszukujemy w nowym kodzie


<param name=\"FlashVars\" value=\"clickTag=http://twojastrona.pl".$link."\"/>

oraz


<embed src=\"$imageurl\" pluginspage=\"http://www.macromedia.com/go/get/flashplayer\" type=\"application/x-shockwave-flash\" width=\"$width\" height=\"$height\" wmode=\"opaque\" FlashVars=\"clickTag=http://twojastrona.pl".$link."\" ></embed>

i zamieniamy
http://twojastrona.pl na adres naszej witryny (strony głównej czyli domeny). Nie dodajemy ukośnika na końcu adresu.

Później oczywiście musimy utworzyć reklamy za pomocą komponentu Reklama, tzn. wysyłamy oba pliki (.swf i .gif.) do katalogu images/banners, tworzymy reklamę, podajemy adres który ma się otwierać po kliknięciu, podajemy wymiary animacji flash i wskazujemy w wybieranej liście nasz plik .swf. Ważne: .swf a nie .gif, ten drugi będzie w zależności od user-agenta oglądającego wyświetlany automatycznie zamiast flash'a.

I to wszystko, na odpowiednich urządzeniach wyświetlają się odpowiednie formaty plików bannerka, klinięcia w bannerki flash (i .gif) są zliczane. :)

Powyższa metoda w żaden sposób nie zakłóca wyświetlania i zliczania reklam w formatach graficznych, reklamy mogą być i takie i takie na jednej witrynie.

Nie wiem jak jest rozwiązana sprawa z bannerkami flash na J2.5 bo w życiu nic na niej nie robiłem (aż wstyd...) ale pewnie można dostosować ten kod i tam. Chyba, że tam jest już coś podobnego.

Kod znaleziony na anglojęzycznym form Joomla, trochę jeno przeze mnie dopracowany i potestowany.
Jeśli było już to proszę adminów o wywalenie i danie mi po łapskach za lenistwo przy przeszukiwaniu forum ;)

Bazyl
06-08-2012, 22:23
Jeśli było już to proszę adminów o wywalenie i danie mi po łapskach za lenistwo przy przeszukiwaniu forum ;)
Więcej takich leniów!!!