とは言いつつ、自分も最近まで放っておいて、ようやく重い腰を上げ対策を行ないました。やってみると結構苦労したので、備忘録として記録を残しておきます。
まずBloggerにはAdSense広告を配置するにも様々な方法があります。テンプレートに直接貼り付ける方法やガジェットを使う方法があり、ガジェットを使うにしても、「Google AdSenseガジェット」を使う方法や「HTML/JavaScriptガジェット」を使う方法などがあります。
ここでは比較的よく使われる「HTML/JavaScriptガジェット」で AdSense を貼り付けた場合に適用できる方法を説明します。「Google AdSenseガジェット」にも適用できるかもしれませんが、確認はしていません。
まず404ページで広告を非表示にする方法を調べていると、ざっと以下のページが見つかります。
Bloggerの404ページでAdSense(アドセンス)を非表示にする
Bloggerの「404 ページ」をカスタマイズする方法
これらのページで解説しているのは、基本的には以下の様な方法です。
<b:if cond='data:blog.pageType != "error_page"'>
AdSenseウィジェットのコード
</b:if>
<b:if ..> .. </b:if>
タグでAdSenseウィジェットのコードを囲むと説明されています。(Bloggerの管理画面ではガジェットとウィジェットという言葉が混在して使われています。どちらも同じ意味なのであまり気にしないでください。)Blogger ではレイアウトを定義するのに、HTMLを独自に拡張した構文が使えます。公式な解説は ここ にあります。上のやり方はこれを利用したものです。
たったこれだけの事なので簡単にできると思っていましたが、やってみるとこれがなかなかうまく行きません。
まず Blogger の管理画面から テンプレート → HTMLの編集 を選択し、テンプレートの編集画面に入ります。「ウィジェットへの移動」ボタンからAdSenseを貼り付けたウィジェットを探します。(ここでは「ウィジェット」という言葉が使われています。)「HTML/JavaScriptガジェット」を使った場合は HTML1 とか HTML2 といった id が付いていると思います。
ジャンプすると以下の様なコードが見つかると思います。これがテンプレートに貼り付けられたガジェット(ウィジェット)コードです。コードが折り畳まれているかもしれませんが、行番号横の三角マークをクリックして展開したものです。ここには広告ユニットコードは含まれていないので、ユニットidで検索しても見つかりません。
<b:section class='tabs' id='crosscol' maxwidgets='1' name='Cross-Column' showaddelement='yes'>
<b:widget id='HTML3' locked='false' title='スポンサーリンク' type='HTML' version='1' visible='true'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'>
<data:title/>
</h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
</b:section>
さて、このコードの中のどの部分を
<b:if> .. </b:if>
で囲めば良いのでしょうか?「ウィジェットコードを囲め」ということなので、まずは
<b:widget ...> ... </b:widget>
の部分を囲んでみました。しかしこれはうまくいきません。というのは、「テンプレートを保存」ボタンを押してもコードを保存してくれないのです。Bloggerのテンプレートエディタは保存時にかなり色々な事を厳密にチェックしているらしく、少し不備があると全く保存してくません。かと言って、エラーや警告を出してくれる訳でもなく、まったく不親切なエディタです。
次に一つ外側の
<b:section ...> ... </b:section>
の部分まで囲んでみました。結論から言うとこれは、うまく行くものと行かないものがありました。自分のブログで言うと、ヘッダに配置したものについてはうまく行きましたが、それ意外の部分に配置したものについては、これはまたエディタが保存してくれないのです。これについては理由がさっぱり分かりません。さてどうしたものかと、更に調べてみると、以下のページが見つかりました。英語版のAdSenseヘルプフォーラムの記事です。
https://productforums.google.com/forum/#!topic/adsense/58zUGFAFh_I
ここに書いてある方法を適用してみたのが以下のコードです。
<b:section class='tabs' id='crosscol' maxwidgets='1' name='Cross-Column' showaddelement='yes'>
<b:widget id='HTML3' locked='false' title='スポンサーリンク' type='HTML' version='1' visible='true'>
<b:includable id='main'>
<!-- Don't show Ads on error page -->
<b:if cond='data:blog.pageType != "error_page"'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != ""'>
<h2 class='title'>
<data:title/>
</h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>
</b:if>
<b:include name='quickedit'/>
</b:includable>
</b:widget>
</b:section>
<b:if ..>
のコードをウィジェットの内部の追加します。これであれば保存もでき、うまく動きました。自分のブログに貼り付けてある三つの広告全てに適用しました。AdSenseの404ページ対策は既にほとんどの人がやっていると思ったていたのですが、具体的なコードまで示して説明しているページが見つからず、結構苦労しました。まさかウィジェットの内部に記述するなんて想像もつきませんでした。しかしみんなどうしているのでしょう?ひょっとして対策をしている人あまりいないのかな?
0 件のコメント :
コメントを投稿