注目の投稿

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

ここが一番デイビューあるのでダメ元で… 探しています: 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 件のコメント:

コメントを投稿