トップページ > コンピュータ > プログラミング > Perl

2007年12月26日

AdSense:試行錯誤した結果..

恐らく、私の管理しているオリジナルコンテンツのページで一番アクセスがある掲示板CGIに、AdSenseを貼ってみようかなと思い立ち、KENTさんのCGIに少し手を加えて見ることにした。プログラミングは苦手だからPerlもハッキリ言って良く分からないし、HTML文法も分かってる様で分かってないし苦労した。

結果、なんぼやってもAdSenseが表示されない。なんで?なんで?

もしや..と思って、既にAdSenseを設置しているブログを見てみたら表示されている広告タイプと、表示されていない広告タイプがある事が判明。っていうかほぼ全滅状態でかろうじて一つだけ表示されてるという訳だ。これじゃぁいくら頑張ってPerlの文法と格闘しても駄目だっつうの..orz 更に念のため良く訪れるお気に入りサイトにもAdSenseの状態を確認しに行ったら表示されていなかった。自分だけでなく他の人のAdSenseもダメって事は、Google側でトラブルが起きている様だ。AdSenseカレンダーにメンテナンスは予定されていないから、トラブルと見て良いだろう。もっともGoogleは全く気にせず停止してる可能性もあるけどね。

今回、Perlで作ったCGIの中で少しだけテクニックを覚えたので備忘録しておく。覚えておく自信も無いし覚えておきたくも無いから備忘録するのだ。

KENTさんのCGIで、私が使っているのはWeb Patioというスレッド型の掲示板CGIだ。こいつにAdSense広告を表示させたいと思った。Ver.1.51と古かったので、一気にVel.3.21にアップグレードした。画像もアップ出来るようになっているし、迷惑書き込み対策も色々盛り込まれている。

それはさておき、AdSenseの設置方法だ。

まずはAdSenseのコードを埋め込む。これはinit.cgiに埋め込むのが良さそうだ。一番最後の所に追記してしまう。

#-------------------------------------------------
#  Google AdSense
#-------------------------------------------------
sub googleadsense {

# ここにGoogle AdSenseのコードを貼る。
 print <<"EOM";
<script type="text/javascript"><!--
google_ad_client = "pub-1255228029350803";
//728x90, 作成済み 07/12/26
google_ad_slot = "1698123370";
google_ad_width = 728;
google_ad_height = 90;
//--></script>
<script type="text/javascript"
src="
http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
EOM

}

#が行頭にある行はコメント行だから無視していい。
sub は関数定義だ。{から}までがこの関数の動作を定義する範囲。この関数の中ではGoogle AdSenseのコードを出力(Print)するだけの単純な動作が定義されている様だ。

なお、よく分からないのだが、Perlで記述されたスクリプトの最後は下記の様になっているので、これが一番最後になるようにしなければならないらしい。どういう意味なんだろうか?まぁ気が向いたら調べてみるけど今はだるいからそういうものだという認識に止めておく。

1;

そして肝心のpatio.cgiだ。こいつの中で下記の様に記述すると、init.cgiに記述したAdSenseのコードを読み込んでくれる。

# Google AdSense(コメント行)
 &googleadsense;

別のcgiファイルに記したコードを読み込む方法は分かってしまえば非常に簡単だ。しかしどこでもいいかと言うとそうではない。KENTさんのCGIには色々な所で下記のような部分がある。「ヒアドキュメント」という手法らしい。 応用例が色々とネット上にはあるので検索してみると理解が深まる。 良く読み返してみると、AdSenseコードを記述した所でもこの手法が使われている。subは関数の定義だから、googleadsenseという関数は、ヒアドキュメントでAdSenseコードを出力するだけの関数として機能するという事だろう。

print <<"EOM";
<div align="center">
<table width="95%" border="0">
<tr>
 <td>
 <table width="100%">
 <tr>
 <td>
EOM

この最初の

print <<"EOM";

から

EOM

までの間に記された文字はそのまま出力されるらしい。だからHTMLのタグコードをそのまま打ち込んでいるのだ。なのでこの間に

&googleadsense;

と書いても駄目だ。何故なら関数(一見すると変数っぽいんだけど)を認識せず、そのまま文字として表示されてしまうからだ。いったん

EOM

の行を入れてから、googleadsense(変数)を呼び出して、また続きは

print <<"EOM";

と始めてHTMLのコードを書いていく。後はHTMLの知識でなんとでもなる世界の様だ。同様にしてread.cgiにも表示させたい部分に、

&googleadsense;

を埋め込んでいけば、スレッド内表示でもAdSenseが表示される様になる。ぶっちゃけ整形はHTMLの知識が必要だし、AdSense広告には大きさやフォーマット等の種類があるので、こればかりは各々が頑張って試行錯誤して好みに合わせるしか無さそうだ。

しかし、Google AdSense復旧しませんなぁ~。そう言えば以前も広告が表示されなくなって焦った事があるんだけど、今日は特に長引いているような気がする。

投稿者 sasapurin : 21:37 | コメント (0) | Perl , Webブラウザ | トラックバック

トップページ > コンピュータ > プログラミング > Perl