【MediaWiki】ダイナミック・ページ・リスト備忘録
概要
海外のWikiエンジンといえばMediaWiki だが、その機能の1つであるダイナミック・ページ・リストの利用例を備忘録的メモ。
使い方
利用には <DPL></DPL>
か {{#DPL:}}
の2つの実装方法がある。
どちらも基本的には同じようなことができるが、決定的に違うこととして <DPL></DPL>
は{{PAGENAME}}
等のテンプレートを表示フォーマットに埋め込むことができない。
{{#DPL: |category = Target:{{{1|{{#replace:{{BASEPAGENAME}}|&|and}}}}} |namespace = Sub |notcategory = Non Target Page |allowcachedresults=true |ordermethod=title |mode=userformat |format = ,{{ ²{#ifexist:²{#titleparts:%TITLE%|1|1}²|²{#titleparts:%TITLE%|1|1}²|²{#titleparts:%TITLE%|2|1}²}² ¦param= ²{#switch: %TITLE% ¦FugaFuga/Chapter1 = unique ¦#default = normal }² }} ,, |noresultsheader=There is no target. }}
上記は {{Target List}}
みたいな感じでテンプレート化しており、以下のことをしている:
Target:<Hogehoge>
という名前のSub名前空間に属するカテゴリが設定されているページを全て取得する(ただしNon Target Pageカテゴリがあるページは除く)- このテンプレートを呼び出す際に、第一引数を自由に設定できるようにしている
- 設定されてなければ表示したページの
{{BASEPAGENAME}}
を取得する {{BASEPAGENAME}}
は名前空間名と末尾の下位ページの階層を除外したページ名(Help:Title/Foo/Bar
ページではTitle/Foo
を返す)
- 設定されてなければ表示したページの
- このテンプレートを呼び出す際に、第一引数を自由に設定できるようにしている
&
は残念ながらうまくパースができない仕様なので、and
に変換しているallowcachedresults
をオンにすることで取得結果をキャッシュする- これをしないとページ読み込みを大幅に遅らせることがある
ordermethod
でページのタイトル順に並び替えmode
で表示フォーマットを自作タイプに指定format
で表示の仕方を設定- 「format=全リストの最初,各リストの最初,各リストの最後,全リストの最後」という形式
- 今回は各リストの最初だけほしかったのでそれ以外は無記述でパス
- ページの先頭と一致する名前のテンプレートを呼び出している
- 例)
Sub:Hogehoge/Chapter1
,Sub:FugaFuga/Chapter1
,Sub:Zero/One/Chapter1
- 名前空間を含まない記事名(
%TITLE%
)を#titleparts
でスラッシュで分割する。このとき、最初のスラッシュ部分が階層ではなく名前の一部である場合も考慮し、#ifexist
で名前と一致するか判定し、一致しない場合は分割しないようにしている- スラッシュ2つが名前の場合は考慮されていない
- ページ名と同じ名前のテンプレート内にはパラメータが指定できるようになっている
- 引数
param
には{{#switch}}
構文で一致するページ名のページで表示される場合、特殊な設定のテンプレートが適用されるようになっている
- 引数
- DPL内のテンプレート in テンプレートする場合
{{}}
は²{}²
に代替する - 同様に
|
も¦
に代替する
- 「format=全リストの最初,各リストの最初,各リストの最後,全リストの最後」という形式
- 検索結果0件のときは
noresultsheader
で「There is no target.」と表示するように指定
参考記事
ヘルプ:ダイナミック・ページ・リスト | コミュニティセントラル | Fandom Extension:DynamicPageList3 - MediaWiki