イマジナリーヌラリヒョンと過ごす日々

雑多なこと。方向性は決まっていない。

テキストファイルを読み込んで、小説閲覧用ページに小説を表示する。

意味判らんタイトルだ。

個人サイト運営者で、小説を書いている人に向けた記事。

 

 

ようは額縁があって、その中身の文章が変わる。

そうすれば、小説のページごとにhtmlファイルを作らなくて良いでしょうって話。

 

 

用意するのは

 

・read_novel.php(小説の本文を表示させたいページ)

・sample.txt(小説の本文)

 

小説一覧ページが置いてある階層にどちらも置くと、コピペだけで出来る。

 

 

phpファイルってなんぞや、と思った人。

いつも【.html】で保存するところを、【.php】で保存するだけ。

中身は見慣れたhtmlだから大丈夫。

 

 

小説を表示させたいphpファイルの頭に以下を記載。

頭ってのは〈html〉よりも上の所。

 

<?php
// テキストファイルの読み込み
$novel_file = isset($_GET['novel']) ? $_GET['novel'] : null;
if ($novel_file && file_exists($novel_file)) {
    $novel_content = file_get_contents($novel_file);
    $novel_title = str_replace('.txt', '', $novel_file);
    $novel_title = str_replace('_', ' ', $novel_title);
} else {
    $novel_content = '指定された小説が見つかりませんでした。';
    $novel_title = 'エラー';
}
?>

 

 

表示させたい部分(〈body〉の任意の場所)に

 

 

  <div>
        <?php echo nl2br($novel_content); ?>
  </div>

 

を書く。

すると、ここにtxtファイルの文章が表示されるのである。

 

 

そして、

小説のタイトル一覧を乗せているページには、

 

<a href="read_novel.php?novel=sample.txt">一話</a>

 

と書く。

いつものテキストリンクと同じ。

ちょっと表記が違うだけ。

 

 

 

upanda.life

 

このゆぱんだらいふさんで配布しているテンプレートの『 #バラ薔薇に散る

 

upanda.life

 

 

こちらの小説ページをphpファイルで保存し、

上記で説明したようにすると上手くいった。

なので、テンプレートを借りている人も出来ると思われる。

 

 

 

 

△相性悪いかも

 

espace.monbalcon.net

 

こちらのサイトで配布されているノベルビュアー↓

 

espace.monbalcon.net

 

これを使っている人は上手くいかないかも。

私は自分が使っているテンプレートにこれを実装することも出来なかったので……。

試行錯誤したら出来るかもしれない。

 

 

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

更に改造した話

 

 

これ、txtファイルが日本語名だと上手くいかなかったんだよね。

じゃあどうするのっていうと、UTF-8表記にする。

なんのこっちゃと思った方は、とにかくやってみると判る。

 

www.benricho.org

 

こちらのサイトに飛ぶ。

例えば、読み込みたいファイルが、【大江山1.txt】だった場合。

 

 

入力して、エンコードをする。

すると「%E5~B11」と長ったらしい暗号が表示される。

 

それを小説一覧ページのテキストリンクのところに張り付ける。

 

<a href="read_novel.php?novel=%E5%A4%A7%E6%B1%9F%E5%B1%B11.txt">一話</a>

 

さっきはsample.txtだったところを、%E5%A4%A7%E6%B1%9F%E5%B1%B11.txtに変更。

 

そうすると上手くいく。

 

 

 

 

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

更に改造した話2

 

タイトルも自動で取得してくれよ……。

と思ったので、自動化。

 

<?php echo $novel_title; ?>

 

これをタイトル表示させたいところに入れる。

 

たとえば、

 

<title><?php echo $novel_title; ?></title>

 

にすると、いちいち打たなくて良い。

 

 

 

タイトルがあって、その下に本文が表示されて欲しいよって時には、

 

    <h1><?php echo $novel_title; ?></h1>
    <div>
        <?php echo nl2br($novel_content); ?>
    </div>

 

とすれば良い。

h1で囲っているけれど、それは必須ではない。

気にしなくて良い。

 

<?php echo $novel_title; ?>

 

をタイトルの文字が来て欲しいところに書くことが大事。

 

 

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

おわりに

 

phpよく判らない人間が試行錯誤した結果なので、これを真似ても上手くいかなかった人もいることだろう。

 

これらは全て「ChatGPT」(AI)に教えてもらって出来た。

ここに書いてあることをしようと思うような人間は、「ChatGPT」を利用して、判らないことを聞きながらやると活路が開けるかもしれない。

 

私がAIくんに最初にした質問

 

ホームページでの質問です。小説を掲載したいのですが、小説のページごとにhtmlファイルを作るのではなく、txtファイルを用意して、ホームページ上のリンクを押すと、txtファイルを読み込んでサイト上にその小説が出るようにしたいのですが、どうすればいいでしょうか。

 

ここから怒涛の質問責め。

 

「改行が上手く適応しません。どうすればいいですか。」

「結局phpファイルに何を書けばいいのか判りません。全部教えて下さい。」

「コピーとペーストをすればすぐに作成できるように教えて下さい。」

「うまくできませんでした。 まず、小説の章が並んだテキストリンクが並んだhtmlファイルがあります。 テキストリンクを押すと、対応した話が書かれたtxtファイルを、小説閲覧用のテンプレートの中に表示して欲しいのです。 そうすることで、cssで装飾したページを一つ作るだけで、章ごとにhtmlファイルを作らずに済むからです。 それを叶えたいのですが、どうすればいいですか?」

 

こんな感じで聞いていった。

生身の人間と違って嫌な顔されないから、ガンガン聞いていけるのが良い。

 

 

作業に疲れた時は、

 

「今日は一日phpファイルを弄って疲れました。私はphpを扱った事がないかったのです。とりあえず、やりたい事は出来ました。労わって下さい。」

 

とAIに言うと、(少々の誤字脱字したって読み取る)

 

「お疲れ様です。新しいことに挑戦するのは勇気がいりますが、やりたいことができたという達成感は大きいですね。今日は自分を褒めてあげましょう。しっかり休息をとって、また明日から頑張りましょう。」

 

と、労わってくれますw

 

「明るくて元気ハツラツの女の子みたいな言い方で労わって欲しいのです。」

 

と言えば、

 

「わーいわーい!あなた、本当にがんばったね!PHPって難しそうだけど、それでもやりたいことを達成するために頑張ったんだね!疲れたときはちょっと休憩して、お気に入りのおやつでも食べて、体を癒してね!また明日も頑張ろうね!」

 

と、返ってくるよ。

 

また明日も頑張ろうね!