いや~。ひどかったですよ。スパムコメントの嵐。結局はSpammerBlockerで遮断することにしまして、ようやく落ち着いています。まあ、表示することもなくスパム扱いでたまっていたものを全部除外していくだけだから良かったのですが・・・。とりあえずそれは置いておいて。
JavaScriptだけで広告を入れ替えたい
サーバー上で動作するスクリプトを使って入れ替えるのであればそれは簡単ですよね。例えばBlogモジュールでも動的に出力するものには普通にそういう動作がついていますし、ランダムで表示するものを変更する、といった機能もあるので楽勝です。
問題なのは静的コンテンツの場合です。使えるのはせいぜいJavaScriptだけ。しかも広告の種類によっては「コードを書き換えてはならない」という規約もあったりとややっこしい。コードを書き換えてはならない、というのは「表示される場所に対象のコードを正確に書き出す」という意味ととればよいのでタグコードをJavaScriptからdocument.writeやらタグからinnerHTMLとして書き込めばこの制約を守れるとは見ているのですが、それでもJavaScriptだけだと難しいタイプのものもあります。
GoogleAdsenceなんかがそれで、あれは必要な変数をHTML上で定義した後、表示するためのJavaScriptをGoogleにおいてあるコードを読み込む、という形をとるのでこちらだけで静的にやるにはかなりきつそうです。
逆に「イメージバナー」+「リンクに広告の状態が書き込まれている」だと簡単そのものです。簡単にコードを書くなら、adsencecode.jsを用意して、
//AdsenceCodeを入れる配列 var AdsenceCode = new Array(); //使用したアドセンスの配列 var UsedAdsence = new Array(); //各AdsenceCodeを設定(例として10個を設定するような状態) AdsenceCode[0] = '<a href = "http://・・・"><img src = "http://・・・"></a>'; AdsenceCode[1] = '<a href = "http://・・・"><img src = "http://・・・"></a>'; ・・・ AdsenceCode[9] = '<a href = "http://・・・"><img src = "http://・・・"></a>'; //対象のidを持つdivタグにランダムにAdsenceを入れる(ただし、同一のAdsenceを避ける) function WriteAdsenceCode(tagid) { //タグを取得 var tag = document.getElementById(tagid); //使用するAdsenceCodeを取得 var adcount = AdsenceCode.length - UsedAdsence.length; if(adcount == 0) return false; var adnum = (Math.random() * adcount) | false; for(var i = 0;i < UsedAdsence.length;i++){ if(adnum == UsedAdsence[i]){ adnum++; } } //AdsenceCodeを書き出し tag.innerHTML = AdsenceCode[adnum]; //書き出したAdsenceCodeを記憶 UsedAdsence.push(adnum); UsedAdsence.sort(); }
としてやって、使用する側では
<head> <script type = "text/javascript" src = "adsencecode.js"></script> ・・・ </head> <body> ・・・ <div class = "adsence" id = "adsence1"></div> <script type = "text/javascript"> WriteAdsenceCode('adsence1'); </script> ・・・ </body>
とすればその位置に広告が表示されます。例の場合は一応divにclassの定義がかかっているので、スタイルシートでmarginでも与えておけば位置は問題ないと思います。
もちろん、実験はやってみています
余り意味がないのは承知していますが、やってみないとおもしろくも何ともないので。アクセス数もそこまであるわけではないですが、こういうのは実験をしていかないと何ともいえないですからね。GoogleAdsenceはアクセス数が少なくても成約型ではないのでそれなりだったりしますが、大半の広告は成約型なのでちょっと厳しかったりします。