利用者:逢沢 茅/素人のDPL講座

出典: へっぽこ実験ウィキ『八百科事典(アンサイクロペディア)』

と言う事で、素人のための、ではなく素人がするDPL解説。指摘・叱責等はノートまで。

なお、基本的に素人が付け焼き刃と経験則で解説するので間違っても信用しない事。すべての記述には語尾に"らしい"を付けて読まれる事を強くお勧めします。


目次

[編集] DPLって何?

Dymamic Page Listの略。Mediawikiの拡張機能の一つで、色々な条件に適ったページのリストを作成してくれる便利な機能です。

通常の記事で使うより、利用者ページなどで使われる機会が多い気がする機能ですが、使えると(自分みたいに中途半端でも)とても便利です。

[編集] 見ておきたいもの

DPLを始める前に見ておきたい、便利なページ。

(英語が読めないので何とも言えないが)DPLの開発ページらしい。単語を拾う程度でも大意はつかめたりするので、結構使える。
日本語なのでとにかく使いやすい。もっと早くこれに気付けてればなぁ…。
DPLとは直接関係は無いが、出力形式を弄る特に参考になる。

[編集] 解説

さてさて、だらだら言葉を並べても上手に説明出来る気がしないので早速実践しながら説明です。「3.3」まではDPLの基礎や表示に関する解説、それ以降は個人的に使っていて意味が分からなかった苦労した機能の解説になります。

ところでDPLを使う時には、

{{#DPL:}}

で括る方法と、

<dpl> </dpl>

で括る方法がありますが、以後後者を使います。趣味です…と言うか、後者でずっとやってたので前者はよく分かりません。恐らく特に違いは無いと思います…。

[編集] 基本形

それでは最初にDPLの基本の形として、特定のカテゴリに入っているページのリストを見てみましょう。

<dpl>
category=スタブ
count=10
</dpl>

と、入力してみます。これを出力させると、

こんな感じのリストになります。

さて、DPL中の「category=スタブ」という記述。これは「Category:スタブに登録されているページを呼び出せ」という命令。「スタブ」を好きなカテゴリ名に変えれば、そのカテゴリに登録されているページを呼び出してくれる様になります。複数のカテゴリを指定したい場合は「category=カテゴリ1|カテゴリ2|カテゴリ3…」とすればOKです。

「category=」と同様の出力条件を制御する命令は多様にあり、これを上手く使うのがDPLの醍醐味(?)です。中でもよく使うと思われるものをに纏めました。色々試してみて下さい。

では再び上のDPLを見てみましょう。「category=」の他に「count=10」という記述があります。こちらは「ページを順に10件だけ表示しろ」という命令。「10」を任意の数字に変えれば、表示件数はその通りに変更されます。ちなみにcountの命令を入れない状態での表示件数は500件です。今回の様に出力件数が非常に多くなる事が予想される場合に使ってみましょう。

はい、ここで「『順に10件だけ』って何の順番で10件なんですか?」と質問したあなた、鋭いです。実はDPLでは出力の順序を設定出来たりもします。詳しくは後述

[編集] userformatを使う

ここからは出力の形式の変更について見ていきたいと思います。

ページリストの出力時、デフォルト状態では

  • 記事1へのリンク
  • 記事2へのリンク
  • 記事3へのリンク

という風に出力されます。

ですが、この形式を外れた形で出力させたい場合、「mode=userformat」を使用します。まず、DPL内で

mode=userformat

と記述。あとは、

format=

で表示させたい出力形式を記述していきます。「format=」は通常、

format=<リストの最初で表示>,<リスト内で表示(前半)>,<リスト内で表示(後半)>,<リストの最後で表示>

という風に記述します。これは出力すると、

<リストの最初で表示>
<リスト内で表示(前半)><リスト内で表示(後半)>
<リスト内で表示(前半)><リスト内で表示(後半)>
<リスト内で表示(前半)><リスト内で表示(後半)>
   ・
   ・
   ・
<リストの最後で表示>

注:表示を見やすくするため適宜改行を入れましたが、実際には改行は入りません。

と、表示されます。それでは実際にやってみましょう。例えば、

<dpl>
category=スタブ
count=10
mode=userformat
format=唯一神又吉イエスは、スタブ記事(,[[%PAGE%]] ,,など)を地獄の火の中に投げ込むものである。
</dpl>

としてみると、


唯一神又吉イエスは、スタブ記事($素 .hack .hack//G.U. 0.999... 0verflow 0分00秒 1+1=2 1/2 10 1000%SPARKING! など)を地獄の火の中に投げ込むものである。


こんな形式での出力が可能になります。

また、「%PAGE%」の部分には出力時に「名前空間:記事名」が代入されています。この他にもDPLには様々な変数が設定されており、テンプレートやマジックワード、CSSなども組み合わせて様々な情報を多様な形式で表示させる事が出来ます。によく使うと思われるものを纏めたので、色々試してみてください。

[編集] DPLで表を作る

Userfomatの応用として、DPLの情報を纏めた表を作ってみます。記述は次の通り。

<dpl>
category=スタブ
count=10
mode=userformat
format={|class="wikitable" \n|- \n!ページ名\n,|-\n|[[%PAGE%]],\n,|}
</dpl>

「format=」の部分に注目してください。所々に「,」や「\n」が入っている以外は普通のパイプ構文とほとんど変わりません。「,」は先ほどの「<リストの最初で表示>,<リスト内で表示(前半)>,<リスト内で表示(後半)>,<リストの最後で表示>」を区切っている「,」、「\n」はプログラミングにおける改行コードとか言うもので、表の構造を記述する際にDPL内で改行を入れられないために使用しています。つまり(?)、

{|class="wikitable" \n|- \n!ページ名\n|-\n|[[%PAGE%]]\n|}

は、DPL内において

{|class="wikitable"
|- 
!ページ名
|-
|[[%PAGE%]]
|}

と同様の出力をしてくれる訳です。つまり、先ほどのDPLを出力させると表の構造は

{| class="wikitable"
|-
!ページ名
|-
|[[ページ1]]
|[[ページ2]]
|[[ページ3]]
   ・
   ・
   ・
|}

となって、表示は

ページ名
$素
.hack
.hack//G.U.
0.999...
0verflow
0分00秒
1+1=2
1/2
10
1000%SPARKING!

こうなります。なお、この表の記述はXHTMLで記述するのも可能…みたいです。

[編集] include

「include=」を使うと、他のページの内容を読み込む事ができます。まず、

include=*

と記述します。すると、そのページの内容を「<リスト内で表示(前半)>」の一番後ろに呼び出してくれるようになります。

例えば、


<dpl>
titlematch=逢沢 茅/素人のDPL講座/include例%
count=3
include=*
format=はじめ,<div>前半,後半</div>,さいご
</dpl>

とすると、

はじめ
前半include例1 変数呼び出し1後半
前半include例2 変数呼び出し2後半
前半include例3 変数呼び出し3後半
さいご

と、表示される訳です。(→読み込み元 1,2,3)

さらにそのページで使われているテンプレートの特定の変数(例えば、{{NRV}}を使用している記事の{{NRV}}の「fix」欄)のみを読み込む事も可能で、その場合は、

include={テンプレート名}:変数名

と記述します。例えば、

<dpl>
titlematch=逢沢 茅/素人のDPL講座/include例%
count=3
include={:User:逢沢 茅/素人のDPL講座/include例4}:1
format=はじめ,<div>前半,後半</div>,さいご
</dpl>

とすると、

はじめ
前半変数呼び出し1後半
前半変数呼び出し2後半
前半変数呼び出し3後半
さいご

と表示されます。(→読み込み元 1,2,3,Temp)

[編集] よく使う機能

[編集] 出力の内容を制限する

  • category=
任意のカテゴリに登録されたページのみを出力する。複数指定する場合は「category=カテゴリ1|カテゴリ2|カテゴリ3|…」と記述。
  • uses=
任意のページをテンプレート呼び出ししているページのみを出力する。対象はTemplateに限らないので、記述する際は名前空間から記述する。複数指定する場合は「|」で区切る。
  • titlematch=
任意の文字列とページ名が一致するページのみを出力する。「%文字列%」と記述。複数指定する場合は「|」で区切る。
  • linksfrom=
任意のページからリンクされている記事のみを出力。複数指定する場合は「|」で区切る。
  • linksto=
任意のページにリンクしている記事のみを出力。複数指定する場合は「|」で区切る。
  • namespace=
任意の名前空間のページのみを出力。

なお、それぞれ頭に「not」を付けると、反対の意味の命令になります。例えば、「notcategory=」は「任意のカテゴリに登録されていないページのみを出力する」命令です。

[編集] 出力の個数を設定する

  • count=(任意の数字)
出力する個数を設定。デフォルトでは500。
  • randomcount=(任意の数字)
出力する個数を設定し、かつ出力をランダムにする。
  • offset=(任意の数字)
出力する際、任意の数だけページをスキップ。

[編集] 出力の順序を設定する

「ordermethod=」という命令を使います。「=」以降に次の命令を入れることで、出力される記事の順序が変わります。

  • title
デフォルト設定。記事名順に出力。
  • categoryadd
カテゴリに加えられた時間が新しいものから出力。「category=」などとの併用が必須です。
  • lastedit
最後に編集された時間が新しいものから出力。
  • order=descending
「ordermethod=」とは独立して使用。出力の順序が逆になります。

[編集] 出力時の変数

出力の形式を自分で決める際に使う変数。一部は変数の種類を拡張する命令を入れる必要がある。

  • %TITLE%
名前空間を含まないページ名。
  • %PAGE%
名前空間を含むページ名。ちなみに、Image空間の記事などは「:Image:記事名」と出力してくれる。
  • %CATLIST%
カテゴリの一覧。リンクつき。「addcategories=true」と併用。
  • %DATE%
日付を表示。「addeditdate=true」や「addfirstcategorydate=ture」と併用、「userdateformat=」で出力の設定を行う。

[編集] その他

  • mode=userformat,format=
出力の形式を自分で弄れるようになる。詳しくは#userformatを使うを参照。
  • include=
出力したページの一部を読み込む。詳しくは#includeを参照。
  • userdateformat=
%DATE%で出力する日付の形式を設定する。条件文中で使用する時間の記述を使う。
例えば「userdateformat=H i s」と入れると、「(24時間制での"時間") (分) (秒)」と出力される。
  • addeditdate=true
最新版の日付を表示する。
  • addfirstcategorydate=ture
初めてカテゴリに登録された日付を表示する。「category=」などと併用。

[編集] 関連項目

自分が仕組みも良く分からずにつくったDPLの構造を解説。