ListPages Magic and You

このページの批評は終了しました。

評価: 0+x
blank.png

昨今、ListPagesという言葉がよく飛び交うようになりました。

ListPagesを使ったSCPを見た人が、質問デスクでそれを再現したいと言ってきたり、ある特定の動作を実現する方法を知りたいという人の質問も、答えがListPagesだったりします。また、誰かがあなたのページにコメントで、「ListPagesモジュールを使うべきだ」と教えてくれることもあります。

私は熱帯雨林で何ヶ月も「ListPages」という言葉について瞑想し、ついに私の心は深い眠りの人の夢を超えた場所へと昇華されていったのです。あなたはそれがどういうものかご存じかもしれませんし、何を意味するかも知っているかもしれません。しかし、ListPagesの真髄が体内を巡っているのを実感しています。私の意志によって、その希薄な形を感じたのです。

私はListPagesという第五精髄に熱中しており、DrMagnusDrMagnusAdvanced Formatting and Youの続きとしてこのガイドでその知識を皆さんにお伝えしようと思います。



このガイドでは、ListPagesモジュールの例を、ページの他の部分と区別するために、グレーの背景にしていることに注意してください。通常のListPagesのモジュールは背景が透明になります。

ちょっと待ってよ、Croquembouche!

「私はListPagesモジュールの使い方を一から知る必要はないです!」、「SCP-2998SCP-2111そしてSCP-3002などで使われているListPages Thing2を知りたいだけなんです。」と私に言うかもしれません。

そんな時、私はこう返します。「いいえ、基本的なことを学ぶのはとても大切なことです。コードをコピーして貼り付けるのはいいのですが、うまくいかず原因がわからないときに、あなたはどうやって修正するのですか?」

でも、もしあなたが本当にこれから書くことをすでに知っている(もしくは知っているふりをしたい)のであれば問題ないのでROUNDERHOUSEの第五節「とにかく動けばいいから教えて!」までスクロールして下さい。でもね、私は忠告しましたよ?


1: ListPagesとは何か?


ListPagesはWikidotモジュールです。完全なドキュメントはこちらで見ることができます。

ドキュメントを引用すると

ListPagesモジュールは、サイト内のページを選択して表示する汎用的で広く利用されているツールです。

そう、文字通り「Lists Pages」なのです。

ListPagesは一般的にSCP wikiでは次の2つの用途があります。

  1. Wikiを特定のページ群にフィルタリングし、一覧で表示すること。
  2. SCP (または任意のページ) に複数のページがあるように見せ、1ページずつ閲覧はできるがすべてに同じ評価モジュールを付けること。

前者は、「つまらないけど役に立つ」というものです。我々がこれを"Listing Pages"とそう呼ぶその名の通りなのです。これはListPagesが4つのモジュールを持つページの例です。3

後者はThing4、誰もが知りたがっている「重要なもの」です。実は、これを「ListPages Thing」と呼ぶことにしましょう。略してLPTと。これははLPTを使用したページの例です。

しかし、前者のListing Pagesの方が説明が簡単なので、後者のListPages Thing(LPT)のために知っておくべきことを、これを使ってたくさん説明したいと思います。

注意

ListPagesモジュールは1ページにつき1つまでにしてください。

ページの読み込み速度はListPagesモジュールによって本当に遅くなります。私の著者ページには一時期30ものListPagesモジュールがあったのですが、読み込みに1分以上かかることもありました。ひどいものだったのでやめておいたほうがいいでしょう。


2: LISTING PAGES


早速ですが、ListPagesの最初の実装である、ページの単純なリストアップについて説明します。

これは私5が最近Wikiに書いた5つのページのリストです。(何か困ったことがあったときに、私がまだアクティブかどうかの目安にもなるでしょう。)

もし私が著作のURLを書き込んでそのままにしておいていると思うなら、考え直したほうがいいでしょう。あなたはListPagesの魔法を目にしています。もし望むなら、それらのページの1つに行って、投票し(正直に!)、そしてこのページを更新することで証明できます。ここに記載されている評価も変わるのがわかると思います。

このページのソースを確認すると、次のようなコードがあります。

[[module ListPages created_by="RTa_technology" category="*" order="created_at desc" limit="5" separate="no"]]
* %%title_linked%% (%%created_at%%) (+%%rating%%)
[[/module]]

意味がわからない?大丈夫です。— そのためにこのガイドがあるのですから。

やろうと思えば、著作上位5ページを表示することもできます。5つ以上表示することもできます。あるいは、特定の日付以降に作成されたページだけを表示することもできます。ListPagesモジュールが受けとるパラメータはたくさんあるので、好きなようにできます。

ListPagesの基本的な使い方を3つのステップで説明します。

  1. 必要なページを選択する
  2. リストがページ内容をどう表示するかを変更する。8
  3. 実際にリストを表示する


2.1: リストに掲載するページの選択


もし何もパラメータを指定しなければ、ListPagesはwiki上のすべてのページをリストアップしようとします。そうならないように(ですよね?)、セレクタを指定します。これらはListPagesに、どのページを選択し、どのページを避けるべきかを指示します。

セレクタを使って、それぞれが何をするのかを確認しましょう。

ListPagesには様々なセレクタが用意されており、どのページを選択するか正確に指示することができます。ここでは、最も便利なものを紹介します。

  • created_by — 各ページの作者名を指定します。これを"Croquembouche"に設定すると、ListPages は私が作成したページのみを表示し、他のページは無視されます。ただし、これは実際にそのページをその9Wikiに投稿したユーザーを選択するだけであることに注意してください!ListPagesは共著や合作に対して機能しません。
  • rating — 各ページの評価を指定します。">20"とすると、評価が20以上のページのみが表示されます。"=0"とすると、評価が0のページのみが表示されます。
  • tags — 各ページのタグを指定します。タグの名前に"+"をつけて始めた場合、そのタグを持つページのみを表示します。タグの名前に"-"をつけて始めた場合、そのタグを持たないページのみが表示されます。例えば、"+scp -keter"とすると、"scp"タグを持ち、"keter"タグを持たないページを全て表示します。
  • created_at — 各ページが作成された日付を指定します。このセレクタは、公正な範囲の値を受け付けます。"2009"は2009年に作成されたすべてのページを選択し,"2009.02 "は2009年2月に作成されたすべてのページを選択します.">2009.02 "の場合は,2009年2月以降に作成されたすべてのページを選択します."last 3 month"は、過去3ヶ月間に作成されたすべてのページを選択します。
  • name — ページ名、というよりはページのURLを指定します。"SCP-3000"はSCP-3000のページにマッチします。%記号で「これで始まるページ」を表します。例えば、"SCP-%"は"SCP-"で始まるすべてのページと一致します。
  • category — ページのカテゴリを指定します。通常は、ListPagesは現在のページと同じカテゴリにあるページのみを検索します。このページの場合、カテゴリは"_default"です。page-tagsの場合、カテゴリは"system"で、earthwormの場合、カテゴリは"component"です。URLを確認してください。コロンの前はすべてカテゴリーで、コロンがない場合は"_default"です。10

要約すると、各セレクタは特定のページにマッチし、他のページは無視されます。あるページがリストに表示されるには、すべてのセレクタにマッチする必要があります。

ドキュメントでは、"ページの選択"のタイトルで他のいくつかのセレクタを含むこれらのセレクタの詳細について説明しています。


2.2: リストの修正


異なるページを選択するだけでなく、そのページをどのように表示するかを指定する必要があります。

もういくつか知っておかなければならないパラメータがあります。これらはセレクタではないので、上記のドキュメントのセクションには記載されていませんが、全く同じように使用されます。

  • limit — 表示するページ数を指定します。"5"に設定すると、5ページ以上表示されません。
  • perPage — リストの1ページあたり何ページ表示させるかを指定します。(これほど紛らわしいことはありません!)通常この値は20に設定されており、リストに20以上のページがある場合、新しいページネーションが作成されます。これの動作は、top-rated-pages-this-monthのSCPのリストの一番下にあります。(月が始まって約1週間以上経過していると仮定します。)最大値は250です。
  • separate — リスト内の各要素を、それ自身の小さなリストにまとめるか、あるいはすべて同じリストにまとめるかを指定します。有効な値は"yes"あるいは"no"です。"yes"とすると、リストの各項目の間に大きな隙間ができてしまい、あまり良くありません。
  • order — リストの記載方法

"order"パラメータが受け付けるオプションはたくさんあり、ドキュメントの"Ordering Pages"の見出しの下にリストアップされています。ここでは、より便利なものをいくつかリストアップします。

  • order="rating" — 評価昇順
  • order="name" — ページ名(URLで指定されたもの)のアルファベット順
  • order="title" — ページタイトル(実際のページのタイトル)のアルファベット順
  • order="created_at" — ページが作成された日付順
  • order="comments" — コメント数の多い順
  • order="random" — 全てがランダムな順序!1分間に1回、再ランダム化する。

デフォルトでは、すべてが昇順に並びます。(つまり、低い数字が最初に表示されます。)降順で表示する場合は、最後に"desc"をつけます。 — order="rating desc"のように。

特に昇順に並べ替えるオプションはないことに注意してください。正しい方法は、"desc desc"を付加することです。これって意味があるのでしょうか?いいえ。Wikidotにこれ以上のものを期待してもいいのでしょうか?とんでもない。


2.3: リストの表示


さて、欲しいページを正確に選択する方法と、リストのパラメータを変更する方法について、すべて理解できたかとおもいます。手元にはページのリストが出来ているでしょう。

そのリストを表示する場合、多くの選択肢があります。モジュール本体の中、つまり[[module]][[/module]]の間には、さまざまなコンテンツマーカーを配置することができます。

コンテンツマーカーは、それぞれスタンプ11のようなものです。ここでは、ページのタイトルを表す %%title%% を例にとって説明します。想像してみてください。このListPagesモジュールには、あらかじめタイトルのリストがあります。最初のタイトルをページにスタンプし、次に下に移動して次のタイトルに変更し、それをスタンプします。そして、次のタイトルをスタンプする。最終的にはページタイトルのリストができあがります。

ここでは、最も便利なコンテンツマーカーをいくつか紹介します。いつものように、ドキュメントには"Sections head/body/foot"という見出しの下に全リストが掲載されています。沢山あるので、ぜひ見てみてください。

  • %%title%% — タイトル
  • %%title_linked%% — クリック可能なリンク付きタイトル
  • %%created_by%% — ページ作成者
  • %%created_at%% — ページ作成日
  • %%rating%% — ページ評価
  • %%index%% — リスト内のページの位置12
  • %%content%% —ページのコンテンツ全体。これについては、後ほどまたご紹介します。

ここでは7つ(全部で56個存在する)紹介しましたが、中には絶対に使わないような無名なものもあります。

注意

ListPagesは、SCPのメタタイトルを表示することはできません。例えば、SCP-173をリストアップしたい場合、ListPagesに "彫刻 - オリジナル"を表示させることはできません。

これは、SCPのメタタイトルが、SCPの記事そのものではなく、SCPシリーズのページにのみ記載されているためです。したがって、その情報はListPagesにはアクセスできません。ListPagesは選択されたページに関する情報を取得・表示するだけで、そのページに関する情報を他のページで取得することはできません。


では、いろいろなパラメータがわかったところで、デモをやってみましょう。

リストアップしたいのは…

  • All pages created in the past three months…
    • created_at="last 3 month"
  • …with a title beginning with the letter "S"…
    • name="S%"
  • …that have a rating of less than 100…
    • rating="<100"
  • …and that are not tagged "scp".
    • tags="-scp"
  • 過去3ヶ月間に作成された全ページの中から…
    • created_at="last 3 month"
  • …Sから始まるタイトルで…
    • name="S%"
  • …評価が100以下のもので…
    • rating="<100"
  • …"scp"タグが付けられていないものをリストにします。
    • tags="-scp"
  • I want to show no more than 40 results…
    • limit="40"
  • …and I want to show 10 results per page…
    • perPage="10"
  • …and I want all of these to appear in the same list instead of in separate lists…
    • separate="no"
  • …and I want them to be ordered by rating, in descending order.
    • order="rating desc"
  • 40件以内の結果を表示させ…
    • limit="40"
  • …1ページあたり10件表示して…
    • perPage="10"
  • …これらすべてを別々のリストではなく、同じリストにして…
    • separate="no"
  • …評価降順で並べます。
    • order="rating desc"
  • I want these pages to be in a numbered list…
  • …followed by the date on which the page was created…
    • %%created_at%%
  • …followed by the page title with a link to the page…
    • %%title_linked%%
  • …followed by the author's name…
    • by %%created_by%%
  • …followed by the page rating, in parentheses.
    • (%%rating%%)
  • これらのページを番号付きリストで表示して…
  • …その後にページ作成日を書いて…
    • %%created_at%%
  • …ページタイトルとページへのリンクを配置…
    • %%title_linked%%
  • …作者名をその後に書いて…
    • by %%created_by%%
  • …()内にページレーティングを表示します。
    • (%%rating%%)

さて、次のようなListPagesモジュールにすると…

[[module ListPages created_at="last 3 month" name="S%" rating="<100" tags="-scp"
limit="40" perPage="10" separate="no" order="rating desc"]]
# %%created_at%% %%title_linked%% by %%created_by%% (%%rating%%)
[[/module]]

…以下のリストを出力します。

  1. 05 Dec 2022 04:18 Shigaraki Kokkuri 1 by shigaraki_kokkuri (0)
  2. 26 Nov 2022 01:23 SCP-XXXX アネミア by soutaisei2 (0)
  3. 25 Nov 2022 10:03 scp test.1(safe_口紅) by skroomr1228 (0)
  4. 10 Nov 2022 12:06 SCP-XXXX-JP サンゴ症 by Spade5623 (0)
  5. 27 Oct 2022 09:52 SCP-2490-JP 真実を知る数 (下書き) by Soilgrean (0)
  6. 25 Oct 2022 07:06 SCP-xxxx-JP -博士のパチパチッと!似たモノ製造機 by SSDDFF (0)
  7. 02 Oct 2022 13:34 SCP-XXX-JP 青春40きっぷ  by Syutaro Eji (0)
  8. 01 Oct 2022 10:38 SCP-XXXX-JP 怒れるコメツブハエトリ(10/15 第三稿) by skyder_2nd (0)
  9. 01 Oct 2022 10:36 SCP-XXX-JP - 不確かなもの by SudoZero (0)
  10. 22 Sep 2022 20:23 Syuiro Vermilion 1 by Syuiro_Vermilion (0)
ページ 1 / 212次 »

これはとても役に立つリストなのでしょうか?いいえ、でもいい例です。

良いですね!おめでとうございます!もし一緒にサンドボックスで作業していたなら、あなたはListPagesモジュールを扱えるようになりました。そうでなかった場合は、まぁとにかくおめでとうございます。

注意: サンドボックスでListPagesモジュールを扱おうと思ったら、ページを取得するのはメインWikiからではなく、サンドボックスのページであることに注意してください!毎回不意打ちを喰らわせます。

宿題: most-recently-createdを開き、"Options"、"Page Source"の順にクリックし、ListPagesモジュールが見つかるかどうか、そして、それぞれのモジュールのパラメータが何をするかわかるかどうか確かめてみて下さい。


また、ListPagesモジュールのコンテンツセクションは、1行である必要はないことに注意してください。必要なだけ行を増やすことができます。

もし、複数の行がある場合は、separate="yes"にすることをお勧めします。そうしないと、少し困ったことになるかもしれません。


さて、ListPagesの基本的な使い方を説明しましたが、次は最も有名な応用編です。


3: ListPages Thingの活用


ここからが難しいところです。

SCP-2998に続いて、SCP-1893SCP-1173は、ListPages Thingで最も有名なページで、最近の人気を支えているのは間違いないでしょう。3つともEskobarEskobarが書いたもので、彼自身もAelannaAelannaに教えを受けたので、彼らには感謝していますね。

それ以来、多くのページがListPages Thingを行うようになりました。SCP-2111SCP-3002SCP-3939SCP-3449my author pageSCP-3020Jim North's Proposalをはじめ、多くの人が使っています。

あなたのページもListPages Thingを行う場合は、コメントを残してみんなに知らせてくださいね!

SCP-3939が一番よくできていたと思います。でも、少し偏見かもしれませんね。

これからは、ListPages ThingをLPTと略すことにします。


注意! LPTを使うということは、「何故LPTを使った記事にしたのかと読者に向けて説明をする必要がある」という大きな代償を払うことになります。LPTは、そのコンセプトやフォーマットスクリューを機能させるためにLPTを本当に必要とする重たい記事のために取っておくべきです。LPTはSCP-AVGJOE13には適していません。


3.1: LPTとは何か?


LPTとは、SCP (または任意のページ) に複数のページがあるように見せ、1ページずつ閲覧はできるがすべてに同じ評価モジュールを付けるもののことです。LPTは、ページ上のリンクをクリックした後のURLをチェックすることで簡単に識別できます。もしページのURLが"/offset/X"(Xは数字)で終わっていれば、LPTです。LPTのほとんど(すべてではありません!)は、このようにして特定することができます。

より広義の意味として、Wiki上の任意のページが更新またはリンクをクリックした結果、内容が変更されることを指します。

例外はありますが、SCP-2786SCP-3211は、[[module ListPages]]の代わりに[[html]]を使用しているので、LPTではありません。[[html]]は、ページの一部が他の部分より数秒長く読み込まれ、また変化が瞬時に起こることで識別することができます。

LPTの変更は、[[html]]とは異なり、ページが更新されたときか、ユーザーが/offset/のURLに移動したときにのみ発生します。

SCP-3340は、[[html]](ListPagesモジュールは使用していない)を使用しており、ページが更新されたときにのみ変更が発生するため、余計に混乱します。

要約:

LPTも[[html]]も、ページの内容が変化して見えるようにするための技術です。

LPTはListPagesを使用しています。[[html]]は、HTML、CSS、および多くの場合JavaScriptを使って実現しています。

[[html]]を使った場合の変化は瞬時に起こり、ほとんど何でもありですが、すでにページ上にある[[html]]ブロック内のものにしか影響を与えることができません。

LPTを使った場合の変化は、ページ全体に影響しますが、ユーザーがオフセットページへのリンクをクリックするか、ページを更新したときにのみ発生します。

LPTは習得しやすく[[html]]もっと複雑です

警告

ドキュメントによると、ListPagesモジュールの内部では[[html]]はうまく機能しないそうです14。LPTの子ページで[[html]]を使うことはできず、うまくいきません。Wikidotのせいです。

両方ではなく、どちらか一方を使うことになります(ただし、LPTと[[html]]の両方が独立している限り、1つの記事に含めることができます)。自分の記事に最適なもの、自分の技術に最適なものを選んでください。


3.2: LPTの仕組み?


LPTは、標準的なListing Pagesの技術を非常に特殊な形で応用したものです。

これはいつものListPagesモジュールです。ここで使っている特定のパラメータに注意して見てください。

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

ここで新しい用語がいくつか出てきましたので、今一度確認しましょう。

  • category="fragment" — "fragment"カテゴリからページを指定します。"fragment"カテゴリのページは、"今月の人気ページ"や"最近作成されたページ"に表示されません。このため、子ページを作成するのに便利です。この点については、後ほど説明します。しかし、完全に表示されないわけではありません。
  • parent="." — 親セレクタは、このパラメータの値と同じ親を持つ子ページを指定します。parent="."は、現在のページを親とする子ページにマッチします。ページの親を設定するには、下部の"Options"→"Parent"をクリックし、この記事の親ページにしたいページ名を入力します。
  • order="created_at" — この機能は、どういったものなのか知っておく必要があるのですが、ページを作成日順に並べるものです。SCP-1893は実際にはランダムにページを並べます。
  • limit="1" — この場合、ListPagesが選択できるページ数は1ページに制限されます。1ページだけです。
  • %%content%% — このプレースホルダーは、ページタイトルや評価値などの細かな情報を取得する代わりに、ListPages が選択されたページのコンテンツ全体を現在のページに出力することを意味します。CSSモジュールも含みます。
  • offset="@URL|0" — これはちょっと説明が難しいので、写真で説明します。

3.3: オフセットパラメータ


先ほど書いたSCPがあるとします。下の緑色のボックスは、この新しいSCPのページを表しています。

lp1.png

次に、その中にListPagesモジュールを配置しましょう。これは大きな穴(後で%%content%%で埋められます)で表されています。

lp2.png

では、子ページを2つ作ってみましょう。これらのページが、親ページの穴を埋めることになるのです。

子ページとは具体的にどのようなもので、どのように作るのか、少し詳しく説明したいと思いますが、とりあえず、こんな不細工なサーモン色の箱で表現してみますね。

lp3.png

つまり、その2つの子ページ(サーモン色)は、親ページ(緑色)の子なのです。

親ページでは、その2つの子ページの内容を指定して表示するために、ListPagesモジュールを記述します。

[[module ListPages parent="."]]
%%content%%
[[/module]]

その結果、次のような親ページが出来上がりました。

lp5.png

すでに問題が発生しています。親ページに、両方の子ページの内容が表示されてしまっているのです。なぜなら、通常、ListPagesは可能な限り多くのページをリストアップするからです。

そこで、limitを1に設定し、強制的にListPagesモジュールで1ページだけ表示させるようにしました。

[[module ListPages parent="." limit="1"]]
%%content%%
[[/module]]

そうすると、以下のようになります。

lp4.png

素晴らしいですね!これで、ListPages モジュールには 1 つの子ページのコンテンツだけが表示され、読者が読み終えたら、もう1つの子ページのページコンテンツが表示されるのを今か今かと待っています。

では、実際に2つ目の子ページを表示するにはどうすればよいのでしょうか。

親ページを「広く」する、つまり子ページを両方表示させることは、読者がすでに読んだ最初の子ページを見ることができるため、うまくいかないことはすでに説明したとおりです。

そこで、親ページを右側に移動させるのです。

lp6.png
[[module ListPages parent="." limit="1" offset="1"]]
%%content%%
[[/module]]

これは、offsetパラメータを使用して行います。offsetは、リストの先頭から表示したい子ページまでの距離と考えるとわかりやすいでしょう。

lp7.pnglp8.pnglp9.pnglp10.png

offsetのデフォルト値は"0"で、リストの最初の子ページを表示することを意味します。必要であれば手動で変更することもできますが、どうしてそうしたいかわかりますか?

offset="@URL" この値16はオフセット値があらかじめ決められた数値ではなく、URLによって設定されることを意味します。 もしあなたが"/offset/X "で終わるページにいるのなら、そのURLはそのページのListPagesモジュールのオフセット値を設定したことを意味します。例えば https://scp-jp.wikidot.com/scp-2998/offset/1 のように。

これにより、読者に次のページへのURLを設けることで、オフセットを変更することが可能になります。SCP-2998は、各子ページの下部にリンクを設けることでこれを実現しています。SCP-3939は、各子ページの下に複数のリンクを設けることで実現しています。

offset="@URL|0" この値はURLに応じてオフセットを設定しますが、URLがオフセットを指定していない場合(たとえば読者が最初にページを読み込んだとき)は0を設定します。この値は好きなように設定できて、"@URL|21"は有効な値ですが、通常は0が最も扱いやすいでしょう。ただ、子ページがどのような順番で並んでいるか、どのページを最初に見せたいかに拠ります。

SCP-1893は、読者に対してリンクを設けません。そのかわり、order="random"を使ってランダムにページを並べます。オフセット値はデフォルト値、つまり0のままなので、順序が変わるたびにリストの最初のページが表示されます (つまり、ランダムなページ)。

  • order="random"での注意: order="random "を使用した場合、順番の更新は1分に1回です。勝手に再ランダム化されるので、何もする必要はないことが良いことですが、これ以上早く再ランダム化することはありません。ページを何度更新しても何も起こらず、1分間は待たなければなりません。

3.4: 子ページの作成


上で挙げたのように、LPTでは親ページと複数の子ページが必要です。

通常、親ページを最後に作成すると、すべての子ページを作成するのに時間がかかるので、子ページを最初に作成する方法を詳しく説明します。つまるところ、サンドボックス上ですべてのページを作成し、テストすることになるので、あまり問題にはなりませんが、念のため。

LPTの内容があるのは子ページです。

今回はSCP-3939を例にとって説明します。

ListPagesモジュールはoffset="@URL|0"なので、メインページはSCP-3939/offset/0の内容と同じになります。

つまり今これが指している子ページはfragment:SCP-3939-0です。子ページと親ページのソースを見て、その違いを見分ける遊びをしてみましょう。

以下の3つのことに気がつくはずです。

  1. 子ページには、親ページにないすべてのコンテンツが含まれます。
  2. 子ページには、読者を異なるオフセットに誘導するリンクが含まれています。
  3. 親ページには評価モジュールとすべてのCSSフォーマット、つまりすべてのページに表示する必要があるものがあります。

三番目についてですが、全ページに必要なものは、そうしたいならば子ページに含めばいいのですが、親ページにあった方が楽ですよね。何かを変更する必要がある場合、子ページごとに何度も変更するのではなく、親ページで一度だけ変更すればいいのです。

なお、SCP-3939の場合、画像が表示されないはずのページが1つだけあるため、親ページではなく、それぞれの子ページに画像が表示されています。##親にあった場合、その画像はすべてのページに強制的に表示されることになります。
その場合は、1ページにのみ画像をアップロードしてください!

通常、ほとんどすべてのコンテンツを子ページに置くことになりますが、そうする必要はありません。例として、SCP-3306はエンディングだけを変更するために、ListPagesモジュールがページの最下部にしかないLPTの記事です。


子ページを作るには、wikiに"fragment:something"という新しいページを作ります。"something"は好きなものを選んでください。17

URLが"fragment:"で始まっていることがとても重要です。 フラグメントページは、"今月の人気ページ"や"最近作成されたページ"、"最近編集したページ"に表示されません。(「最近の変更」には表示されます。) また、jarvis18やscpperはフラグメントページからの投票を総投票数や平均票にカウントしないので、何の影響もありません。

"something"は好きなものでいいですが、個人的には、SCPと同じ名前を付け、オフセットと一緒に番号を付けることをお勧めします。SCP-XXXXの場合は、fragment:SCP-XXXX-0、fragment:SCP-XXXX-1、fragment:SCP-XXXX-2、といった具合になります。

これを子ページごとに繰り返します。

子ページの作成は正しい順番で行うこと! このガイドでは、order="created_at"を使って、ページを作成時刻順に並べることをお勧めしています。並べる順番は自由ですが、日時で並べる場合は、正しい順番で作成するようにしましょう。

子ページには、次のオフセットに簡単に移動できるように、オフセットリンクを設定してください。


次に、親ページを子ページの親に設定します。各子ページの下にある"Options"をクリックし、"Parent"、そして親ページの名前(ページのタイトルではなくURLです!)を入力します。数文字入力すれば、自動的に親ページが表示されるはずです。

親ページをまだ作成していない場合は、一覧には表示されません。親ページを作成した後に行えばよいので、安心してください。


3.5: 親ページの作成


子ページができたので、次に親ページが必要です。親ページは緑色の囲いのようなもので、そこから読者はサーモン色の子ページをひとつひとつ見ていくことになります。

必要なことは、新しいページ(今回は "fragment:"カテゴリではない普通のページ)を作り、そこにListPagesモジュールを貼り付けるだけです。

私がお勧めするListPagesモジュールは以下の通りです。

[[module ListPages category="fragment" parent="." order="created_at" limit="1" offset="@URL|0"]]
%%content%%
[[/module]]

これは、先ほどの"3.2 LPTの仕組み"と同じListPagesモジュールで、各用語はそれ以前で解説しています。

変更したいところがあるとすれば、orderセレクタだけです。私はいつも、子ページを表示させたい順番に作成し、"created_at"で並べることをお勧めしています。しかし、子ページの名前の付け方についての私のアドバイスに従えば、「名前」または「タイトル」でも並び替えができるはずです。SCP-1893のように、「ランダム」で並べることもできます。

サンドボックスでは、親ページは"collab:"カテゴリでなければなりません19。URLが"collab:"で始まっていることを確認してください。ListPagesはデフォルトで親ページと同じカテゴリのページを探すので、サンドボックスで"category"セレクタを省略した場合、すべての子ページも"collab:"カテゴリにする必要があります。


まだ親ページを設定していない場合は、そのページを子ページの親として設定します。

サンドボックスの上では、親ページのURLが"collab:"で始まらない限り、この操作はできません。このやり方は忘れてもかまいませんが、親ページの下にある"Options"をクリックし、名前の変更を行い、ページ名の先頭に"collab:"を付けてください。このステップはメインのWikiでは必要ありません。

ちょっと待ってよ、Croquembouche!

「なぜこの特定のセレクタを使っているのですか?」と聞かれることがあります。「parent="."order="created_at"はいいとして、好きなセレクタを使うことをどうして止めるんだ?」と。

そんな時、私はこう返します。「そんなことは全くありません。子ページの選択には、好きなセレクタを使用することができます。」

しかし、ここで重要なのは、例えば、fragment:SCP-XXXX-0からfragment:SCP-XXXX-10というページを大量に作るとします。order="name"で順番を決め、category="fragment"name="SCP-XXXX-%"でページを指定します。そして、うまくいきます!完璧です。

しかし、その気になれば、誰かがそのページ群の中にページを挿入することを止めることはできやしないでしょう。もし誰かがあなたの知らないうちにfragment:SCP-XXXX-0aを作ったとしたら、それは0と1の間に表示され、あなたのオフセットの表示順番全体が台無しになることでしょう。

悪意のある人は、文字通り時間をさかのぼらない限り、order="created_at"の途中にページを挿入することはできません。実際、created_by="あなたのユーザー名"も含めると、さらに安全性が高まります。共著で何かを書いているのでなければ、そうしない理由はないでしょう。

また、parent="."は、子ページの上部に親ページを指すリンクを自動的に残してくれるので、迷子になってしまった人が、どうやってたどり着いたかわからないときに、とても便利です20

また、本当に親切な方は、子ページのリストをどこかに残しておいてください。将来翻訳する人にとっても便利だし、私のようなおせっかいな人間も、あなたがどうやったか見てみたいので、とても便利です。

もちろん、あなたがLPTを使ったSCP記事を投稿したら、このページにコメントを残してくださいね!


4: まとめ


さて、これで終わりです。Listing PagesについてとListPages Thingについて、基本的なことはすべてお分かりいただけたと思います。

しかし、慎重に行動してくださいね。あなたは今、ListPagesという偉大で、そして恐ろしい力を手に入れたのですから。賢く使い、責任を持って使い、そして最も重要なのは、惜しみなく使うことです。ListPagesのフォーマットスクリューは、上手に使えば素晴らしいものです。しかし、その使い方が悪いと、ListPagesを使用するすべてのページが被害を受けるでしょう。

フォーラムで批評を受けることも大事ですが、それ以上に、書き始める前に自分のアイデアをチェックしてもらうことが大事です。「書くべきでない」アイデアに読者がここまで見てきた途方も無い労力を注ぐことほど、つらいことはありません。


もちろん、ここで説明した2~3個の極めて特殊な使用例以外にも、ListPagesの用途はあります。

ランダムなListPageを連続で使って、読むたびに全く異なる記事を作ることができますし、[[tabview]]と一緒にListPagesを使用して、各タブに個別の脚注を付けることもできます。

誰もやったことのないことをやること。それが、この偉大な力を発揮する一番の方法です。


もし、まだ気になる質問があれば、ディスカッションで聞いてください。必ず回答します。21

ご愛読ありがとうございました。

Croquembouche氏の次回作にご期待ください。












5: とにかく動けばいいから教えて!


さて、Croque22が必要な技術的な説明をしてくれたので、私ROUNDERHOUSEは親愛なる読者の皆さんにアピールをすることにします。私のように、上記のすべてを読む気がないか、見本を見て学ぶ方が良い人もいるでしょう。これは、あなたがLPTを必要とする記事の設定のやりかたについての間に合わせのガイドです。しかし、何か失敗した場合、修正するためには、Croqueが上で説明したノウハウが必要になります。少なくとも、この手段に訴える前に、上記のすべてを読んでみることを強くお勧めします。今回は例としてSCP-9000を使用します。もしここで"scp-9000"と書かれていたら、それをあなたの記事の番号に切り替えてください。


5.1: フラグメント構成の時


まず最初に、リストページの記事を何ページ作成するかを決めます。例えば、3つページが欲しいとします。一般的なページ作成ツールを使ってフラグメントカテゴリに3つページを作成します。 重要なのは、ページは表示させたい順番に作ってください。つまり、"fragment:scp-9000-1"、"fragment:scp-9000-2"、"fragment:scp-9000-3"の3つのページが作成されるわけです。1つ目には最初のループにしたいぺージ、2つ目には2つ目のページ、といった具合に。もちろん、そのような名前をつける必要はありませんが、シンプルで誤解の少ない名前にすることができます。注意:このページにはレーティングモジュールを設置しないでください。 それだと、ListPagesとしての意味がなくなってしまいます。


5.2: 親の支度23


次に、親ページを作ります。今回はSCP-9000なので、メインのシリーズリストの該当するページに移動してページを作成します。その中に、こう書きます。

[[>]]
[[module Rate]]
[[/>]]

[[module ListPages  category="fragment" parent="." limit="1" order="created_at" offset="@URL|0"]]
%%content%%
[[/module]]

[!-- https://scp-jp.wikidot.com/fragment:scp-9000-1 --]
[!-- https://scp-jp.wikidot.com/fragment:scp-9000-2 --]
[!-- https://scp-jp.wikidot.com/fragment:scp-9000-3 --]

[!-- --]の間にあるものはコメントとなります。これらはページには表示されませんし、コードにもカウントされません。主に編集の利便性と翻訳者のために存在します。


5.3: 子育ての基礎24


では、フラグメントページに戻ってください。この親ページをメインページに設定する必要があります。百聞は一見に如かず、画像をご覧ください。

parenting.png

parenting2.png

これをすべてのフラグメントページで行います。"scp-9000"はあなたの記事の番号にそれぞれ置き換えてください。

Croqueの注意事項: サンドボックスでは、親ページがcollabカテゴリに属していないと、親として設定しようとするとエラーになります。ページの一番下にある"+Options"を押して 名前の変更を行い、名前の前に"collab:"を付けることでカテゴリを変更することができます。


5.4: オフセットの移動


次に、もちろん、他のページに移動するための選択肢をページに含めたいと思うでしょう。単にハイパーリンクを張ればいいというものではありません。"fragment:scp-9000-1"の内容で記事が始まってしまうので、"fragment:scp-9000-2"に行く方法を含む必要があります。そのためには、"fragment:scp-9000-1"を編集して、一番下に次のようなものを入れます。

[[>]]
[[[https://scp-wiki.wikidot.com/scp-9000/offset/1|NEXT ITERATION]]]
[[/>]]

"offset/1"は、実際には"fragment:scp-9000-2"の内容が表示されているページを指します。また、"fragment:scp-9000-2"ページに対しても同様に行いたいところですが、戻るリンク、進むリンクの2つを用意する必要があります。

[[<]]
[[[https://scp-wiki.wikidot.com/scp-9000|PREVIOUS ITERATION]]]
[[/<]]

[[>]]
[[[https://scp-wiki.wikidot.com/scp-9000/offset/2|NEXT ITERATION]]]
[[/>]]

"fragment:scp-9000-3"も同様です。


-++ 5.5: 幸運を祈る


すべての指示に正しく従ったと仮定すれば、これでうまくいくはずです。scp-9000のページに行くと、fragment:scp-9000-1のコンテンツが表示され、offset/2へのリンクがあり、fragment:scp-9000-2のコンテンツが堂々と表示される、といった具合のはずです。これらは同じ評価モジュールを共有する必要があり、これが本当の意味での大事なことです。何か質問や懸念があれば、お気軽にPMでお知らせください。

真心を込めて、RounderhouseRounderhouse。👋

ERROR

The R74's portal does not exist.


エラー: R74のportalページが存在しません。利用ガイドを参照し、portalページを作成してください。


利用ガイド

  1. portal:4053112 ( 22 Sep 2022 18:12 )
layoutsupporter.png
特に明記しない限り、このページのコンテンツは次のライセンスの下にあります: Creative Commons Attribution-ShareAlike 3.0 License