CGIとPHPでのヘッダ共有

更新の簡略化のために、MovableType他で使うヘッダフッタと、CGI(Perl)で使うヘッダフッタを共有したいのだが、お互いの中から直接は呼べないので、どうしてもワンクッションが必要。(本当なら、CGI(このサイトの場合はGUESTBOOK)もPHPプログラムに切り替えれば問題ないんだけど、…めんどくさい…書くのはもちろん、どっかから持ってきても、ログの移行とか考えるとねぇ…)


で、ワタクシ考えました。どうしてくれようかと。結論は。ヘッダ、フッタ共にPHPで書いて、それをファイルとしてperlで読んで、再処理して表示。
具体的には、PHPファイルを、# CUT #等のコメントで区切って、perl側ではそれで区切って配列に代入。各箇所を繋げる、と。例えば…

function html_header($TITLE){
$TITLE = “- ” . $TITLE;
# CUT #
?>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=x-sjis”>
<title>NOBODY:PLACE $TITLE</title>
<link rel=”stylesheet” href=”http://www.nobodyplace.com/np.css” type=”text/css”>
</head>
<body>
<?php
# CUT #
}

function html_footer(){
# CUT #

としてやって、間の中の<?php等を除去してやれば、テキストだけ取り出せる、わけ。変数に関しては別途処理が必要だけど、それも、

$HEADER =~ s/\$TITLE/NOBODY PLACE/;

で対処。まぁ…単純すぎる翻訳だけど。

で、これだけならあまり混乱せずに済むんだけど、もう一歩踏み込んで、ヘッダの中の一部分だけを、まったくスタイルの違うトップページでも使いたかった。もう…ひとえに更新が面倒だから(苦笑)コレは苦労した…ヘッダを、機能毎に6つに分割。そしてそれらを結合して変更を加えつつ、処理をして表示。苦労しましたが、コレで完成。しかし…よくよく考えてみると、単に別ファイルに分けたら良かったんじゃねぇか…?それにここまでやるなら、GUESTBOOKの書き出しをphpにするとか。あーなんか、無駄な努力だったんではと思いつつ、現在のところ特に支障はないので…

力技も程々に。