説明

「テイルズ プレイ日記」は FreeWEB を利用して作成しています。FreeWEB は PHP で書かれたシンプルなウェブサイト作成支援 CGI ですが、ほんの少し書き換えることで、スキン(テンプレート)の可能性が広がります。例えば、はてなブックマークボタンが設置できたりします。

本稿では、当サイトで実際に使っている CGI とスキンについて、具体的などこをどう書き換えているのか、ご紹介します。

【注意】改造元の FreeWEB のバージョンは 1.23 です。

スキン改造のポイント

FreeWEB を無改造で使う場合、スキンで利用できる情報は TITLE(サイト名)、CONTENTS(本文)、AUTHER(著者名)、MENU(記事一覧)、pTITLE(個別記事タイトル)の5つです。ただし FreeWEB の配布ファイルに同梱されているスキンには pTITLE が使われておらず、pTITLE が使えることは「秘密」になっています。

これは極限までシンプルさを追求した結果だと思います。けれども、少し慣れた人なら、もう少しスキンの中で扱える情報が多い方が便利に感じるでしょう。

とりあえず pTITLE が使えるとわかっただけで満足できるという方は、以下の CGI 改造は必要ありません。<!--pTITLE--> と書けば、その記事のタイトルが挿入されます。とっても簡単です。

FreeWEB は前記の他に pSETSU(個別記事の概要)、pID(個別記事のファイル名)という2つの情報をデフォルトで内部に持っており、自動で出力される箇所に反映しています。これらの情報をスキンで自由に使うためには、admin.php の一部書き換えが必要になります。最低限必要な書き換えはたった1箇所なので安心です。

ちなみに「テイルズ プレイ日記」のスキンはこうなっています。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=EUC-JP">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<link rel="start" href="./" title="Home">
<link rel="stylesheet" type="text/css" href="/z/wiki/theme/style/style.css">
<link rel="stylesheet" type="text/css" href="/z/dw/x/D/skin/D/style.css">
<title><!--TITLE--> <!--pTITLE--></title>
</head>
<body>
<div id="header">
<h1><a href="./"><!--TITLE--></a> <!--pTITLE--></h1>
<ul id="gn">
<li><!--pSETSU--></li>
<li><a href="http://b.hatena.ne.jp/entry/http://deztec.jp/z/dw/g/TOD/<!--pID-->.html">Comments</a></li>
<li><a href="admin.php" title="編集" class="note">[E]</a></li>
</ul>
</div>
<div class="contents">
<!--CONTENTS-->
</div>
<div class="nav">
<h2>目次</h2>
<ul>
<!--MENU-->
</ul>
</div>
<hr>
<div id="footer">
<div class="adminmenu"><a href="./"><!--TITLE--></a> Powered by <a href="http://www.k-php.com/">FreeWEB</a></div>
<address><script type="text/javascript" charset="Shift_JIS" src="/z-accp.js"></script>管理者:<a href="/"><!--AUTHER--></a></address>
</div>
</body>
</html>

admin.php の書き換え箇所

986行目(原本)付近

原本
for($x=0;$temp[$x];$x++) {
$temp[$x] = str_replace("<!--pTITLE-->","$Ptitle",$temp[$x]);
$temp[$x] = str_replace("<!--CONTENTS-->","$disp_contents",$temp[$x]);
$temp[$x] = str_replace("<!--MENU-->","$disp_menu[$Pid]",$temp[$x]);
fputs($fp,$temp[$x]);
}
変更後
for($x=0;$temp[$x];$x++) {
$temp[$x] = str_replace("<!--pID-->","$Pid",$temp[$x]);
$temp[$x] = str_replace("<!--pTITLE-->","$Ptitle",$temp[$x]);
$temp[$x] = str_replace("<!--pSETSU-->","$Psetsu",$temp[$x]);
$temp[$x] = str_replace("<!--CONTENTS-->","$disp_contents",$temp[$x]);
$temp[$x] = str_replace("<!--MENU-->","$disp_menu[$Pid]",$temp[$x]);
fputs($fp,$temp[$x]);
}
説明

スキンで pSETSU や pID を使いたい場合、必須の書き換えです。2行追加するだけなので、難しくはありません。