単一作品版の改造というか何というか。まだ自サイトでも本稼働させてないんですが…;;
以下β版ソース。
##ファイル構成
+-/作品置き場
-template.html
+-/作品1
+-/作品2
+-/.....て感じに作品ごとにフォルダ分け。中身はincファイル。
-template.php
-information.php(info~1,info~2,info~3...てな感じで、作品ごとに一つ)
## あふたーぐろうすくりぷと@複数作品(フォルダ)対応 ver 0.1.5β
##ToDo/最適化。
##version履歴
##200209/..5 一気に雛形と呼べる程度完成。結局複数ファイル構成に。
##180209/0.1.0 とりあえず着手。やっぱり複数ファイルにしないとだめかなあ…。
template.phpソース
<?php
class TexTemplate {
var $title = null;
var $img = null;
var $folder = "作品置いてるフォルダー名";
var $directory = null;
var $self = null;
var $files;
var $r1;
var $r2;
function __construct($title,$chapter,$directory,$self){//データのセット
$this->title = $title; $this->directory = $directory; $this->self = $self; $folder = $this->folder;
$this->img = "$folder/$directory/title.png";
$this->files = glob("$folder/$directory/*.inc");
$this->r1 = array("$folder/$directory/",".inc","00","01","02","03","04","05","06","07","08","09");
$this->r2 = array("第",$chapter,"一","二","三","四","五","六","七","八","九","十");
}
function display(){//実際表示部
$title = $this->title; $img = $this->img; $f = $this->files; $p = $this->self; $r1 = $this->r1; $r2 = $this->r2; $fnum = count($f) - 1;//必要データの読み込み
if($_GET["i"] == null)://目次作成
foreach ($f as $i => $f){
$index = str_replace($r1, $r2, $f);
echo " <a href=\"".$p.".php?i=".$i ."\" title=\"".filesize($f)."kb.\">".$index."</a> ";
}
endif;
if (isset($_GET["i"]))://本文作成
$i = $_GET["i"];
$numb = $i+1;
$f = $f[$i];
$index = str_replace($r1, $r2, $f);
$f = file_get_contents($f);
$body = preg_replace('/\n/',"<br />",$f);
if ($i > 0):
$bef = "<a href=\"".$p.".php?i=".--$i."\">前</a>";
++$i;
endif;
if ($i < $fnum):
$nex ="<a href=\"".$p.".php?i=".++$i."\">次</a>";
endif;
$navi = "<a href=\"../\">$title</a> $index $bef $nex<br /><span id=\"mod\">LastModify : ".date ("F/d/Y.", filemtime($filename)). "</span>";
$t = file_get_contents("$this->folder/template.html");//テンプレート出力
$t = preg_replace('/#\{title\}/', $title, $t);
$t = preg_replace('/#\{img\}/', $img, $t);
$t = preg_replace('/#\{numb\}/', $numb, $t);
$t = preg_replace('/#\{body\}/', $body, $t);
$t = preg_replace('/#\{navi\}/', $navi, $t);
echo $t;
endif;
}
}
?>
information.phpソース(作品情報を書いたもの。一作品ごとに一つ作成)
<?php
require_once ('template.php');
$self ="information";//このスクリプトの名前(.phpの前)
$$self = new TexTemplate('作品タイトル','話','作品ごとのフォルダー名',$self);//テンプレートのコンストラクト(データセット)へ値を送る
$$self->display();
?>
テンプレート.htmlソース
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>#{title}</title>
</head>
<body>
<img src="#{img}" border="0">
<br><br>
<div>#{numb}<p>
#{body}
</p></div>
<div id="navi">#{navi}</div>
</body>
</html>これで、任意のphpファイルから、目次リンクを表示したい部分に 「<?php include_once("information.php")?>」と書いてinformation.phpを呼び出せば、指定フォルダ内のincファイルを勝手に読み込んでリンク一覧作成&本文をテンプレート通りに出力してくれる具合。あらすじ機能は付けてません。編集機能も目下取組中。
0 件のコメント:
コメントを投稿