注目の投稿

[募集][告知] おしらせ

ここが一番デイビューあるのでダメ元で… 探しています: 2000 - 2010年頃までのいずれかの期間に、私が遊ばせていただいてたなりきりチャットのログ 該当多分3箇所くらい(表裏自前)だと思うのですが、いずれか一箇所でも上記期間のログをお持ちの方、もしいらっしゃったらコピーをお...

8.16.2008

小説サイト構築用?あふたーぐろうすくりぷと

というほど大それたものではないですが、とりあえず自サイト用に作ったテンプレートエンジン紛いを公開。
気に入っているのは、
最初の何行かを抜き出して一覧表示するあらすじ機能
前後ファイルへのナビゲーション機能
です。うん、すごく普通。
将来的にはその場で即誤字脱字修正できる編集機能も付けたいのですが、当分先の話になると思われる('A`)
複数作品対応版はこちら。



以下ソース。
あふたーぐろうすくりぷと・のんふれーむ ver 0.2.6
php5対応。4でも動くとは思います…多分。
ver0.2.6修正個所 空改行タグをすっ飛ばしてくれる素敵仕様へのやっつけ的対策。

$f preg_replace('/\n/',"<br />",$f);//incファイル内の改行をhtml用改行に変換 


$f preg_replace('/\n/',"&nbsp;<br />",$f);//incファイル内の改行をhtml用改行に変換 

としました。
ver0.2.5修正個所 あらすじの抜き出し最後尾の文字化けを修正。
手動直し用↓二行目(<php直下)に

mb_internal_encoding('EUC-JP'); 

を追加。(incなりtxtなりで使ってる文字エンコードを指定)そしたら”あらすじ表示用処理”の下にある

$f1 file_get_contents($f,'',null,0,255); 

をこう変える↓

$f1 mb_substr(file_get_contents($f), 0100); 


以上です。
ver0.2.4修正個所 ファイルの最終更新日付がおかしいのを修正。つうか今回のこれはもうバカとしかorz
手動直し用↓

$cur str_replace($repl1$repl2$f[$i]);//文書のファイル名を変換 

↑の直下に↓

$filename $f[$i]; 

↑を一行まるまる加える。そしたら、

$body .= "<span id=\"mod\">LastModify&nbsp;:&nbsp;"date("F d / Y"getlastmod())."</span></div>";//ファイルの最終修正日付表示 

↑の一行を、こう変える↓

$body .= "<span id=\"mod\">LastModify&nbsp;:&nbsp;".date ("F/d/Y."filemtime($filename)). "</span></div>";//ファイルの最終修正日付表示 

こんだけ。


ソースここから
<?php

mb_internal_encoding('対象作品ファイルで使用している文字エンコード。EUC-JPとかUTF-8とか');
$dir "folder";//このプログラムから見た作品置くフォルダを相対アドレスで指定。末尾にスラッシュは無しで
$files glob("$dir/*.inc");//フォルダ内部の作品ファイルのフォーマットを指定
$repl1 = array("話","第","一");//文字変換用・変換後
$repl2 = array(".inc","$dir/","1");//文字変換用・変換前
/*↑例えばこうすると、「 $dir/1.inc 」というファイルが「第一話」と表示される。*/
$f $files;
if (isset($_GET["i"])):
    $i $_GET["i"];
switch ($i){
case "index"://あらすじ表示用処理
    foreach ($f as $i => $f){
        $f1 mb_substr(file_get_contents($f), 0100);//冒頭100文字を抜き出して表示。
        $f2 str_replace($repl1$repl2$f);//文書のファイル名を変換
    $body .= $f1."---<a href=\"?i=$i\">".$f2."を読む</a> ".filesize($f). "kb.<br /><br />";
    }
break;
default://各ファイル表示用処理
    $cur str_replace($repl1$repl2$f[$i]);//文書のファイル名を変換
    $filename $f[$i];
    $f file_get_contents($f[$i]);
    $f preg_replace('/\n/',"&nbsp;<br />",$f);//incファイル内の改行をhtml用改行に変換
$body "$f<br /><br />";
    $ib $i 1;//前後ナビ用処理
    $in $i 1;
    if ($files[$ib] == true):
        $bef "<a href=\"?i=$ib\"><]</a>";
        endif;
    if ($files[$in] == true):
         $nex ="<a href=\"?i=$in\">[></a>";
        endif;
$body .= "<div id=\"navi\">$bef&nbsp;$cur&nbsp;$nex<br /><br />";//前後ナビ表示
$body .= "<span id=\"mod\">LastModify&nbsp;:&nbsp;".date ("F/d/Y."filemtime($filename)). "</span></div>";//ファイルの最終修正日付表示
}
endif;
echo <<<EOF//実際表示するテンプレート部分
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"><!-- ここではEUC指定してますが、.incファイル(作品ファイル)の文字コードに合わせて適宜変更してください -->
<title>$cur</title>
<LINK rel="stylesheet" href="style.css" type="text/css">
</STYLE>
</head>
<body>
<div><p>
$body
</p></div>
</body>
</html>
_EOF

?>
ソースここまで


上記をコピぺして、meta charsetで指定した文字コードで、適当な名前.phpファイルとして保存。
環境に合わせて最初の方にあるいくつかと、最後のhtml出力部分を調整。こんだけ。
これで、各ファイルへリンクを貼るときは

<a href="なんちゃら.php?i=1">リンク</a

という形式になる仕掛け。
作品ファイル本体(ここでは.inc形式にしていますが)はテキストエディタで打ったまま表示できる(無論タグも使える)+模様替えの際直すファイルが一つだけ、というのが欲しかったのでやってみますた。
あまり……というかほとんど使いでないかと思いますが、良かったら好きに使ってくださいなー。改造するも再配布するも全く没問題ですが、改造した後再配布した場合は問題起きても責任取れませんですのでよろしくです…。

0 件のコメント:

コメントを投稿