livedoorナレッジで「検索エンジンからブログにアクセスすると広告の位置が変わります」という質問があったので、本当かどうか試してみたが、私のブログに関してはリファラーの違いによって広告の出る場所が変わったりしない。しかし、久しぶりによくよく自分のブログを見ていると、何かいつもと違う。


月別アーカイブやカテゴリアーカイブのページを見ると、ページャの下の部分に設定しているマージンより多くの隙間があいている。右の画像でいうと上側が本来デザインしていた際に想定している隙間。下側が現状。
Firefoxでみるとこの程度の隙間だが、IEだと7以前だともう少し隙間が広い。原因としては、空のdiv要素が追加されたことでmarginが相殺されていたのが、この空のdiv要素を挟むことで、相殺されなくなって隙間が2倍になってしまったと思われる。ということで、何が増えたのかテンプレートを見てみると依然と変わりがないわけだが、実際のソースを見ると、下記のようなタグが差し込まれていることを見つけた。差し込まれていた場所は、個別ページはArticlePagerのタグセットの下、TOPページやアーカイブページはArticleLoopの前に差し込まれている。
【個別記事】<div id="ad_rs" class="ad_rs_a"></div>【TOPページ/月別・カテゴリアーカイブ】<div id="ad_rs" class="ad_rs_d"></div>
で、どうやらこれが諸悪の根源らしい。ブログの収益を上げるためにlivedoorとしては通常の閲覧では記事下に出ている広告を、検索エンジンからのランディングの時には記事上に広告が移るようにしている。私のブログで当初再現しなかったのは、livedoor側の広告にはGoogle AdsenseではなくMicroAdを採用していたただった。実際にlivedoor側の広告をGoogle Adsenseに変更したところ、私のブログでも検索エンジンからのランディング時には記事上に広告が出ることを確認した。
しかし、知らない間に告知もなく、デザインが変わっていたのにはビックリである。せめて何がしかの告知でもあれば良いのだが、そういうあたりが相変わらずlivedoorって感じだ。
また私のブログでは広告位置の配置はそれなりに考えて、1stViewで必ず見えるヘッダとサイドバーの上部には広告を出している(もちろん自分自身のAdsenseだが)。さらに記事上にも広告となると1stViewでは広告しか見えない。それは流石にあり得ない。
というわけで、この空のdiv要素をどうするかを考える。自動で差し込まれている以上は恐らく消すことはできないだろう。もしかしたら、変数設定でOFFにすることが出来るのかも知れないが、分からない以上はどうしようもない。とうわけでとりあえず、CSSで非表示にすることにする。。もし広告にGoogle Adsenseを利用しているのであれば、広告自体を非表示にするために、それは利用規約に反しそうだが私の場合はMicroAdにしており、このタグの影響を受けていないので非表示にしても問題はないだろう。CSSに下記を追加する。
div#ad_rs {
display: none;
}
これでデザインも戻って、奇麗さっぱりです。やっぱり想定している隙間より広かったり、ちょっとずれると気持ち悪いものです。しかし、Google Adsenseってああいう風に表示位置をリファラーによって変えることができるとは知りませんでした。勉強になります。


