はてなブログの記事内に、アドセンス広告を表示する -魚を貰うよりも釣り方を学ぶ
こんばんわ。前の記事から読んでくださっている方のために、
少し、知識の共有をしたいと思っています。
めげずに一緒に頑張りましょう^^
【↓前の記事】
www.perorincho.work
アドセンス広告を表示する
結局、自動広告が利用できない、
個別の記事に毎回張るのは面倒だ。となると、
ページのHTML部分にいろいろ書き加えて、
毎回広告のURLを自分でコピペしてくれるように
する必要があるんですね。乱暴に言えば。
流れでいうと、テキストファイルとして、
コードを編集して、
はてなぶろぐのデザイン → スパナマーク → 記事 → 記事下
と開いていって、貼り付ける。そして
変更を保存するっていう形になるんですね。
表示するだけなら
表示するだけなら、ざっとコードを探してきて
コピペ!これで足りますね。
正直99%これでいいと思うんです。
でもね、僕が思うに、こういう風に、
コードに触れるチャンスって、めったにないと思うんですよ。
なので、ただ、コピペしないで、
できる限り、何が書いてあるのか、ちょっと勉強してみようと思ったんです。
魚を貰うよりも釣り方を学ぶ
使い古された言い回しですが、
魚はもらっても、腐る前に食べてしまっておしまいですね。
その後、またおなかが減ってしまう。
しかし、魚を貰うよりも、魚の釣り方を学んでおけば、
いつでも、自分で魚を釣って食べられるんです。
僕は、このコードの分野でもそうなりたい。
いつでも食べたいときにパソコンを食べたいんです。嘘です。
特定の位置に広告を表示する
それでは早速、特定の位置に広告を入れるコードで広く出回っているものを見てみましょう。
ちょっと書いた人がわからないので、引用元を載せられないのが、残念ですが。
引用開始
<script>// <![CDATA[
addEventListener("DOMContentLoaded", function() {
var $target = $('.entry-content > h4');
$target.eq(0).before($('.insentence-adsense'));
}, false);
// ]]></script>
<div class="insentence-adsense">
<p style="text-align:center;" >sponsored link<br>
―広告のコードを張るところ―
</p>
</div>
引用終わり
1行目
<script>// <![CDATA[
addEventListener("DOMContentLoaded", function() {
var $target = $('.entry-content > h4');
$target.eq(0).before($('.insentence-adsense'));
}, false);
// ]]></script>
前置き
この、スクリプト(csript)っていうのは、日本語にすると、台本とか脚本って訳付けますよね。
コンピューター用語では、おそらく、までの間の指示を
ちゃんとJavascript等の台本通りやってくださいね。ってことなんでしょう。
次に[CDATA[]]となっている部分ですが、
これは、キャラクタ―データの略だそうで、いまいちそういわれてもピンときませんが、
とりあえず、普通のHTMLのルールに縛られないで、ちょっとだけ他の文字とか
プログラムが利用できるというもののようです。
要するに、このCDATAの後ろのかっこの中身は、ちょっとだけ例外的な
動きをするものが入ってますよということなのでしょう。
肝心な中身ですが、
addEventListenerというのは、決まった書き方で、カッコの中の関数が
満たされたときに特定の処理をするという仕組みのようです。
そのあとに、ちょっと見づらくなってくるんですが、
DOMContentLoadedというのは、この後のものの処理を、
読み込みと同時にやりますよ。という指示だとのことです。
つまり、これは、この後に書かれている条件を満たしたことが確認されたら
すぐに、広告のオブジェクトを表示してくださいという指示なんでしょう。
続いて、 function()とあるのは、この後の計算や処理を、
(カラッポ)何物もさしはさまずに、そのまますぐに処理してくださいということなんだそうです。
大事な部分
さて、ここからが大事な部分ですね。
var $target = $('.entry-content > h4');
これは、このあと、対象とする、数えるものが何かを決めて(var)、その数より
目的の数が大きくなる初めての整数ということなのでしょう。
今回だと、h4すなわち、これが、見出しを指すのですが、
この、見出しの数を対象とする、数えるということなんでしょうね。今後。
正しく読めているのか不安なんですが、この>は、いわゆる大なりで、
見出しの数よりも大きくなる整数ということなんですかね。要素として考えると。
別にこの段階で数字の意味については考えなくていいです。次で役に立つので。
その次がこれです。
$target.eq(0).before($('.insentence-adsense'));
これは、さっき出してきた個数の数字をeq()のかっこの中に入れると出てくる数ということなんでしょう。
そのあとのbeforeは、おそらく、閾値の前。今回でいうなら次の見出しのカウントがされる前のところまでで。
という意味なんでしょうね。
つまり、ここまでの内容を加味してみると、
まず、eq()に0を入れて、『大見出しの数を数えたとき、それが、0個よりも初めて大きくなる地点の、前に、アドセンス広告を即座に表示しなさい。』
ということになるのでしょう。
言い換えればこれは、一つ目の見出しの前、すなわち、リード文下に、広告を表示してください。
ということになりますね。
応用してみる
ながながと小難しい勉強につき合わせて、ごめんなさい。
でも、せっかく学んだのですから、
応用してみましょう。
数える見出しを増やす
まず、初めに、var $target = $('.entry-content > h4');のh4を、 h3,h4,h5,h6' としてみます。
このh~というのは見出しの大きさを示す表記で数字は1~6までつかえて、
数字が大きくなるほど、見出しが小さくなるそうです。
さっきまでのh4だと、大見出ししか数えませんが、
ほかの数字をいれていくと、もっと小さい見出しも、数えてくれます。
フレームデザイン的に、大見出しがあんまり好きじゃないときなどは、
中見出しばっかり使いたいですよね。
こういう時は、その見出しのサイズに合った数値を入れると、
使っている見出しの大きさに合わせて、広告の位置を決めてくれるようになりますね。
表示する位置を決める
次にもう一つだけ、
$target.eq(0).before($('.insentence-adsense'));とある、行の、
eq()の中の数字を、2や4にしてみましょう。
さっきの法則と同じなので理由は割愛しますが、
この部分の数字が2だと、3つ目の見出しの前に広告が入ります。
同じく、4だと5つ目の見出しの前に広告が入ります。
コピペで、複数の広告を載せる。
ここまでくれば、ほぼ自在に、表示位置を決められますね。
一応の注意点なんですが、僕がやってみた感じとして、
今のパターンで複数の広告を表示しようとすると、
コピペしたままでは、同じ場所に三つの広告が出てきてしまいました。
そこで、いろいろ調べてみた結果、
$target.eq(0).before($('.insentence-adsense'));とあるうちの、
最後の、insentence-adsenseと書かれている部分は、
二つ目以降、insentence-adsense-2といった風に、
「これは、二つ目の広告で、一つ目とは別のものの話をしていますよ」ということを
書いてあげないといけないようです。
なお、このインセンテンスアドセンスというのは、下の方にも出てくるので、
同じ2個目の広告のコード内では、きちんと対応していないといけないようです。
(ちょっといじくってみた感じだと、逆に対応してさえいればほかのことを書いても表示されました。)
<div class="insentence-adsense"> ← このぶぶんです。
最後に
さぁ!もうなんとなく、いけそうな気がしますよね。
とりあえず、
初めの方に載せた引用部分に、
アドセンスさんで作った広告のコードをはめ込んで、
記事下に入れてみましょう。
それがうまいこと表示されたら、あとは、このページでやっているように、
いろいろ書き替えてみると、
楽しいと思います。
…少しはお役に立てましたでしょうか。
最後の方は、意図的に、少し不親切になってます。
コピペすれば、そのまま使えるような状態のものをおいていないので。
でも、たぶんですけど、この記事を最後まで読んでくださった方なら、
いろいろ自分でいじくって表示させた方が、きっと今後のためになるのだと思います。
自分でやってみてうまくいったときめっちゃ嬉しかったので、すいません。同じ気持ちを感じでほしいです。