単一ページ遷移構文とあなた

2017年4月,physicslikephysicslike氏によって開発されたHyper Page Changer    よく聞く言葉だと単一ページ遷移構文とも言われています.    は,今やSCP-JPになくてはならないほどのものになりました.

最近では2か月に一回は単一ページ遷移構文を使用した際に不具合が出た,などの質問が構文チャンネルに上がるほどです.今回は,そんな難解Wikidot構文の中でも最難関の難しさを誇る単一ページ遷移構文の解説をしていこうと思います.

この記事はListPagesの魔法とあなたで説明されているLPTがSCP-JPではあまり使われていないためSCP-JPでよく使われる単一ページ遷移構文を説明した記事になります.




1: 単一ページ遷移構文とは何か?



単一ページ遷移構文とはその名の通り,同じページ内で複数の記事を表示させることができる技術です.そんなことができるのかと思われる方もいるかもしれません.一番有名な単一ページ遷移構文が使われている記事はSCP-2000-JPでしょうか.あの記事も単一ページ遷移構文でページ遷移を繰り返しています.単一ページ遷移構文にはページ自体を変更せずに表示を変更できるというメリットがあるのです.

ListPagesモジュールにはページコンテンツ自体を参照する変数1が備わっています.その変数を利用して単一ページ遷移構文は動いています.変数や引数の説明は第二節で行います.


1.1: 単一ページ遷移構文とLTPの違い



基本的な動き方はLPT2と同じく,ListPagesモジュールで表示する部分を切り替えているだけです.では,LTPとなにが異なるのか.それは表示する部分が同じ記事にあるか,子ページとなっているかという違いです.


1.2: 単一ページ遷移構文の仕組み



では早速,単一ページ遷移構文の構造を見ていきましょう.これは4ページの内容を示した構文です.
ListPagesの魔法とあなたと同じく,初めて見るパラメータもあると思いますので注意して見てください.

   難解Wikidot構文より引用

全ページ共通部分トップ
[[module ListPages offset="@URL|0" range="." wrapper="no" separate="no"]]
%%content{2}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page2" wrapper="no" separate="no"]]
%%content{3}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page3" wrapper="no" separate="no"]]
%%content{4}%%
[[/module]]
[[module ListPages limit="@URL|0" range="." urlAttrPrefix="page4" wrapper="no" separate="no"]]
%%content{5}%%
[[/module]]
ページを増やす場合はここにモジュールを追加
[!--
====
1ページ目の本文
[http://scp-jp.wikidot.com/pagename/offset/1/page2_limit/1 2ページ目へのリンク]
====
2ページ目の本文
[http://scp-jp.wikidot.com/pagename/offset/1/page3_limit/1 3ページ目へのリンク]
====
3ページ目の本文
[http://scp-jp.wikidot.com/pagename/offset/1/page4_limit/1 4ページ目へのリンク]
====
4ページ目の本文
[http://scp-jp.wikidot.com/pagename 1ページ目へのリンク]
====
ページを追加する場合はこの部分に文章と====を追加
--]
全ページ共通部分ボトム

ここで新しい用語がいくつか出てきましたので,今一度確認しましょう.
offset="@URL|0"
これは,ListPagesの魔法とあなたにある通り,相対位置をURLから取得します.@URL|0に関してはListPages Module 一部抜粋&改変に説明があるので読んでください.
range="."
表示範囲を現在のページから取得します.
separate="no"
すべての項目を1つの<div class="list-pages-box"></div>に入れる形になります.
wrapper="no"
すべての項目を<div class="list-pages-box"></div>に入れないようにします.
urlAttrPrefix="pageN"
urlAttrPrefixに関してもListPages Module 一部抜粋&改変に記述がありますので読んでみてください.簡潔にいうと,@URLで被らないようにするというものです.
特に明記しない限り、このページのコンテンツは次のライセンスの下にあります: Creative Commons Attribution-ShareAlike 3.0 License