§(総合トップ)表紙画面§

この小説機能は、旧助け合い掲示板の『全小説共通の名前変換について(http://bbs.alicex.jp/support/133/)』スレ用に作成したものです。
(総合)名前変換フォームへ
全小説共通のナマエを設定するフォームです
●《共通のナマエ1》
#総合の名前変換1#


◎《共通のナマエ2》
#総合の名前変換2#


 

総合トップから各小説機能へ

(※)
●◎(※)
(●:小説ABCは、各小説機能へアクセスする際に同じ名前《#総合の名前変換1#の変換結果》がDreamID[1]として送信されます)
(◎:小説Cには、DreamID[2]として《#総合の名前変換2#の変換結果》も送信されます)
(※:行き先は別スレ用に作ったデモページです)
『小説Aへ』『小説Bへ』『小説Cへ』すべて <input type="submit"> 、つまり名前変換フォームの送信ボタンです。

↓なお、CSSで見た目を弄ってテキストリンク風にもできます。
見た目をテキストリンクっぽくしているだけで、これらも名前変換フォームの送信ボタンです。
▼普通のテキストリンク▼
(小説A)表紙画面へ(総合トップ)表紙画面へ

【表紙画面編集】の中身(一部)

※『自動改行する』のチェックを外した状態で作成しています。
※肝である「総合トップから各小説機能へ」部分だけ抜粋しています。
青枠で囲まれたブロックは、ブロック一つにつき一個の名前変換フォームです。3つそれぞれ、送信先(action="○○")が異なっています。
青字部分が各小説機能へのリンク(に見せかけた送信ボタン)です。それ以外の部分は見た目上表示されません。
<div class="list">

<h2>総合トップから各小説機能へ</h2>

<form action="/サイトID/novel/小説Aの番号/" method="post">
<input type="hidden" name="DreamID[1]" value="#総合の名前変換1#">
<input type="submit" name="dream_name_set" value="小説Aへ">
</form>


<form action="/サイトID/novel/小説Bの番号/" method="post">
<input type="hidden" name="DreamID[1]" value="#総合の名前変換1#">
<input type="submit" name="dream_name_set" value="小説Bへ">(※)
</form>


<form action="/サイトID/novel/小説Cの番号/" method="post">
<input type="hidden" name="DreamID[1]" value="#総合の名前変換1#">
<input type="hidden" name="DreamID[2]" value="#総合の名前変換2#">
●◎<input type="submit" name="dream_name_set" value="小説Cへ">(※)
</form>

</div>

つまり、総合トップページに各個別小説機能の名前変換フォームをこっそり仕込んでいる……というわけです。
隠し名前変換フォームの送信ボタンを押すと、その個別小説機能へ、総合名前変換の結果……すなわち《共通のナマエ》を送信します。

構造設計の意図

やりたかったこと

●一つの名前変換フォームで、複数の異なる小説機能の名前を変換させたい
(『総合トップ』『小説A』『小説B』『小説C』はそれぞれ、URLの/novel/小説番号/が異なる独立した小説機能)

何故できないか

一つの名前変換フォームにつき、一つしか送信先を設定できないからです。
例えば「小説Aの名前を変換したい」ときに使う名前変換フォームは、
<form action="/サイトID/novel/小説Aの番号/" method="post">
<input type="text" name="DreamID[1]" value="設定される名前">
<input type="submit" name="dream_name_set" value="小説A名前変換実行">
</form>
というふうに、送信先が「『小説A』のページ」になっている必要があります。
上記の例は、『小説A』ではないページ(別の小説機能や子ページなど)に、『小説Aの名前変換フォーム』を置く場合の書き方です。
『小説A』内のページに『小説Aの名前変換フォーム』を置く場合ならば、送信先は "./" のみでOKです。これは相対パスという書き方になっただけで、こちらも同じく『小説A』内のページを送信先に指定しています。

当然『小説Bの名前変換フォーム』も送信先に「『小説B』のページ」を指定する必要があります。

一つの名前変換フォームで『小説A』&『小説B』両方に送信を行うことはできない
=一括で、複数の異なる小説機能を名前変換させるのは無理
ということです。

一括で変換できないなら分割すればいいじゃない

そういうわけで、一括変換は諦めます。
このデモページは、
(1)「総合トップ小説機能の【夢(ドリーム)小説設定】で、他個別小説機能に使いたい名前(=《共通のナマエ》)を設定する」

(2)「総合トップ小説機能内のページに、他個別小説機能用の名前変換フォームを設置する」
※個別名前変換フォームの“名前入力欄”には、(1)で設定した総合トップ小説機能の【夢小説用タグ】を入れる。その上で、名前入力欄はtype="hidden"にして読者からは見えないようにしておく。
というふうに作っています。
こうすると、
(a)読者が総合トップの名前変換フォームで名前変換実行。
総合トップ小説機能内の【夢小説用タグ】がすべて、読者の設定したナマエに書き換わる。

(b)読者が総合トップページから個別小説機能(『小説A』など)へのリンクを押す。(と見せかけて実は、隠された名前変換フォームの送信ボタンを押す)
※そのとき初めて、(a)で設定したナマエが個別小説機能にも送信される。
→総合トップで設定したナマエが、リンク先の他小説機能にも設定されている!(ように見える)
……となるわけです。

つまりは、目当ての小説機能へアクセスしがてら、行き先の名前変換も実行してもらう――という構造なのです。

注意点

※名前変換後に表示されるページは、『変換後の戻り先』で設定した場所になります。
フォームに action="/サイトID/novel/小説機能番号/" と書いてあっても、です。
「アクセスついでに名前も変換させる」という手法をとるので、名前変換後に表示されるページは、ちゃんとその小説機能のトップページになっている必要があります。
デフォルト状態だと『戻り先』は“表紙”になっています。その設定で《総合トップページ→小説Aへ》と隠しフォームでアクセスしたときは、“小説Aの表紙画面”に飛びます。
あるいは、『戻り先』を“指定したURL”にして、『指定URL』はにしてもOKみたいです。
戻り先“./”も、「総合トップから小説Aの名前変換実行後→小説Aの表紙画面へ」「小説A内で名前変換実行後→小説Aの表紙画面へ」という動きをしてくれます。
※“表紙”や“目次トップ”に戻れれば良い、という場合はわざわざ“./”にする必要は無いです。
なお当デモページ内では、『総合トップ』『小説A』『小説C』の戻り先がこの“./”になっています。

問題点

読者にその気が無くとも勝手に名前変換を行ってしまう、というのがちょっと欠点です。
例えばこういうときに困ります。
「『小説A』内で名前変換を行った。その後『総合トップ』に戻った。更にその後、『総合トップ』から『小説A』へアクセスした」
→『小説A』のナマエが、『総合トップ』に設定されていたナマエで上書きされてしまった……
折角『小説A』内で個別に名前変換をしたのに、何気ない移動で『総合トップ』のナマエ(=《共通のナマエ》)で再度上書きされてしまう、という問題が起きかねないのです。

この問題に関する詳しい説明と回避策については、『小説A』で説明します。
▼普通のテキストリンク▼
(小説A)表紙画面へ(総合トップ)表紙画面へ
↑top↑