includeの威力

日曜日, 2月 29th, 2004

 せっかくMovable TypeをPHP化したのだから,なにかそれらしいことをやってみたい,と言うのがきっかけだった.ちょうどGoogle AdSenseの審査に通った旨の通知が来ていたので,それを設置がてら,「include」というものを試してみようと思った.
 聞けば,includeはとても便利なのだそうだ.つまり,共通部分は別のphpファイルにしておいて,各ファイルからそれを読み込めばいいと言う.Google AdSenseのスクリプトをそれぞれのテンプレートにいちいち貼り付けるのはちょっと面倒だな,と考えていたので,さっそく試してみることにした.
 まずはTemplateの編集画面より,新たに「googlead.php」を作成した(新しいテンプレートを作成して,そこにスクリプトをコピー&ペースとしただけ).で,そのあと,Main Index内に

<? include"googlead.php"; ?>

を書き加えた.早速トップページにアクセスしてみる.

Warning: main(googlead.php): failed to open stream: No such file or directory in index.php on line 453
Warning: main(googlead.php): failed to open stream: No such file or directory in index.php on line 453
Warning: main(): Failed opening ‘googlead.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in index.php on line 453

includeは失敗か?でもなんとなくファイルがないっぽい.そこでFTPでディレクトリを調べたところ,なんとgooglead.phpファイルができていなかった.どうやら新しくgooglead.phpテンプレートを作成したときに,再構築していなかったのが原因のようだ.
 そこでもう一度再構築をしてみる.そのついでに,googlead.phpテンプレートもちょっと変更して,このサイトのデザインに合わせてみた.
 今度は見事に成功.ちなみに最初に表示された広告は,amazon.co.jpの広告だった.
 続いて,Master Archive Indexにも同様に挿入.勢い余って(?)category archivesにも挿入してみた.しかし警告が出る.何が違うのか?これはパスが違っていた.category archivesはarchivesフォルダに作成されるため,googlead.phpへのパスを./googlead.phpなどとしなくては行けないのである.Date-Based Archiveも同様に設定して成功.
 最後のIndividual Entry Archiveは,ちなさいとでは年ごとにディレクトリが指定されていることから,../../googlead.phpとパスを指定して設置.
 いやー,PHPってめちゃくちゃ便利だな.(includeしか使っていないけど)これを使えば,たとえばページトップに表示されているバナーなども共通に使えるだろう.でも,少し前に入れたアクセス解析のPHPスクリプトはなぜかうまくいかなかった.なんでだろ?設定のページに,同じディレクトリに置くこと,と書かれていたから,そもそもできないんだろうか?ここらへんはスクリプトが分からない自分が情けなる瞬間でもある.