注目の投稿

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

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

2.21.2009

小説サイト構築用?あふたーぐろうすくりぷと@複数作品版

ばかがどうかするPHP戦記生存報告。結局クラス理解するのに三日もかかったとかどうよ。
単一作品版の改造というか何というか。まだ自サイトでも本稼働させてないんですが…;;
以下β版ソース。


##ファイル構成
+-/作品置き場
     -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 "&nbsp;<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>&nbsp;$index&nbsp;$bef&nbsp;$nex<br /><span id=\"mod\">LastModify&nbsp;:&nbsp;".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 件のコメント:

コメントを投稿