Jump to content

Extension:DynamicPageList

From mediawiki.org
This page is a translated version of the page Extension:DynamicPageList and the translation is 90% complete.
この拡張機能はWikimediaで使われています。この拡張機能のWMF以外のフォークについては、Extension:DynamicPageList (曖昧さ回避) を参照してください。
MediaWiki 拡張機能マニュアル
DynamicPageList
リリースの状態: 安定
実装 タグ , パーサー関数
説明 あるカテゴリに属するアイテムあるいは複数カテゴリに共通して属するカテゴリの中で、最も新しいものからいくつか箇条書きで出力します。
作者 IlyaHaykinson & Amgine
最新バージョン Continuous updates
互換性の方針 スナップショットが MediaWiki とともにリリースされます。 master には後方互換性がありません。
MediaWiki 1.23+
PHP 5.4+
データベースの変更 いいえ
  • $wgDLPmaxCategories
  • $wgDLPMaxCacheTime
  • $wgDLPAllowUnlimitedResults
  • $wgDLPAllowUnlimitedCategories
  • $wgDLPQueryCacheTime
  • $wgDLPMaxResultCount
  • $wgDLPMaxQueryTime
‎<DynamicPageList>
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード

DynamicPageList 拡張機能の翻訳にご協力ください
問題点 未解決のタスク · バグを報告

DynamicPageList拡張機能を使用すると特定のカテゴリに属するページの一覧を作成することができます。

起源

もともとはWikinews用に開発されたものです。現在、ほとんどの言語のWikinewsプロジェクト(n:Wikinews:DynamicPageList)、Meta、MediaWiki.org、その他いくつかの小さなプロジェクトでインストールされています。 これは性能上の問題から、これ以上ウィキメディア・ウィキにインストールされることはないでしょう

以前はDynamicPageList/oldと呼ばれ、その後Intersectionと呼ばれていました。より高機能な DynamicPageList4 にも興味をお持ちかもしれません。

インストールと設定

インストール

  • ダウンロードして、ファイルをextensions/フォルダー内のintersectionという名前のディレクトリ内に配置します。
    開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/intersection
    
  • 以下のコードを LocalSettings.php ファイルの末尾に追加します:
    wfLoadExtension( 'intersection' );
    
  • Yes 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

設定

この拡張機能は複数の設定変数にも対応しています。通常は初期値から変更する必要はありませんが、LocalSettings.phpwfLoadExtension( 'intersection' ) 行よりも後に追記することで設定を変更できます。以下に設定できる変数とその初期値を示します。

# 設定変数。
# 警告: これらは歴史的な理由から、DPL ではなく DLP を使用します(Dynamic list of pages の意)
$wgDLPmaxCategories = 6;                // 検索するカテゴリ数の上限
$wgDLPMaxResultCount = 200;             // 許可する結果数の最大値
$wgDLPAllowUnlimitedResults = false;    // 結果数の制限を解除するか
$wgDLPAllowUnlimitedCategories = false; // カテゴリ数の制限を解除するか
// DPL を使用してページをキャッシュする期間を秒単位で指定。既定は1日。 
// Set to false to use the normal amount of page caching (most efficient), 
// キャッシュを完全に無効にするには 0 に設定します(非効率的ですが、結果は常に最新となります)
$wgDLPMaxCacheTime = 60*60*24;          // ページをキャッシュする期間(秒)

使用法

DynamicPageList の設定は、ウィキの編集画面でXMLに似た文法を使って記述できます。設定変数によって表示するページリストの数、順序、表示モードを変更できます。各設定変数については以下の節を参照してください。例えば、このウィキで最近MediaWiki.orgに移されたページを古いものから5つ表示するには次のように記述します。

<DynamicPageList>
category             = Pages recently transferred from Meta
count                = 5
order                = ascending
addfirstcategorydate = true
</DynamicPageList>

もっと複雑なDynamicPageListの例です。

<DynamicPageList>
category=foo
count=20
namespace=file,main
addfirstcategorydate=ymd
imagewidth=70
galleryshowfilesize=yes
galleryshowfilename=yes
imagesperrow=7
gallerycaption=Galleries!
ordermethod=sortkey
order=ascending
mode=gallery
offset=12
</DynamicPageList>

上記の例は、fooカテゴリに属するファイル名前空間にある12番目から31番目のページを、画像ギャラリー形式で、fooカテゴリに追加された日付を年月日の書式で見出しにつけ、画像の幅は70pxにして表示するという例になります。

ページ選択

category

category にて条件に入れるカテゴリを指定します。 DynamicPagelist構文に入れたすべてのカテゴリが指定されます。 指定できるカテゴリの数の範囲はこの拡張機能のソースコードに規定されています。 カテゴリ名に {{CURRENTMONTHNAME}} のようなマジックワードを指定できます。

category=category nameとして記述します。

<DynamicPageList>
category = Demo
category = Demo 1
</DynamicPageList>

notcategory

notcategory は、ページリストを特定のカテゴリに含まないページに制限します。 カテゴリ名に {{CURRENTMONTHNAME}} のようなマジックワードを指定できます。

<DynamicPageList>
category    = Demo
notcategory = Demo 1
</DynamicPageList>

namespace

namespace で列挙する記事が属する名前空間を指定できます。名前空間の名称または番号(Help:Namespaces/ja#名前空間の識別参照)をつけて指定できます。無効な名称を指定した場合は標準名前空間が指定されたものとして扱われます。

<DynamicPageList>
category  = Demo
namespace = Help, user, main
</DynamicPageList>

redirects

redirects転送ページを含めるかどうかを指定します。 この値は以下のいずれかです:

  • exclude – 既定、リダイレクトを列挙しない
  • include – リダイレクトを列挙
  • only – リダイレクト以外のページを列挙しない
<DynamicPageList>
category  = Demo
redirects = only
</DynamicPageList>

stablepages

stablepages は、Extension:FlaggedRevisions の使用時に、公開版(フラグ付き)のページを含めるかどうかを指定します。 この値は以下のいずれかです:

  • exclude – 一覧に含めない
  • include – 公開版と非公開版を一覧に含める。 既定
  • only – 公開版のページのみを一覧に含める

機能させるには FlaggedRevs がインストールされている必要があります。

count

countは表示する結果の数を制限します。 既定では、最近カテゴリに追加された順にページが表示されます(orderを参照)。 ただし、拡張機能のソースコードで定義されている最大値を超える結果はリストされませんので注意してください。

<DynamicPageList>
category = Demo
count    = 2
</DynamicPageList>

offset

offset は、リストの開始位置を途中からに指定します。 例えば、countと併用することで、複数列のレイアウトの作成が可能になります。

<DynamicPageList>
category = Demo
offset    = 2
</DynamicPageList>

段組の例

<table>
<tr><th colspan="3"> recent articles in [[:category:Demo|:category:Demo]]</th></tr>
<tr><td>

<DynamicPageList>
category = Demo
count=5
</DynamicPageList>
</td>
<td>
<DynamicPageList>
category = Demo
offset    = 5
count= 5
</DynamicPageList>
</td>
<td>

<DynamicPageList>
category = Demo
offset    = 10
count=5
</DynamicPageList>
</td></tr></table>

表示内容

shownamespace

shownamespaceは、ページ名を名前空間付きで表示します。 値はtrue(既定、名前空間名を表示: Help:Contents )またはfalse(名前空間名を非表示: Contents )のいずれかです。

<DynamicPageList>
category      = Demo
shownamespace = false
</DynamicPageList>

addfirstcategorydate

addfirstcategorydate は、各記事がカテゴリに追加された日付を表示します。 値はtrue(日付を表示)、false(既定、日付を非表示)、または日付の形式(ymd、md、dm、dmy、mdy、ISO 8601)を指定できます。 複数のカテゴリが指定されている場合は、最初に指定したカテゴリが使用されます。 リンクされたページ名の先頭には、ローカルのMediaWikiの日付表示設定に従って整形された日付が付加されます。

<DynamicPageList>
category             = Demo
addfirstcategorydate = true
</DynamicPageList>

mode

mode はリストの形式を決めます。 値は以下の通りです:

  • unordered – 箇条書きリスト
  • ordered – 番号付きリスト
  • none – プレーンリンク
  • gallery – イメージギャラリー、‎<gallery>のような
  • inline – カンマ区切りリスト
unordered:

<DynamicPageList>
category = Demo
mode     = unordered
</DynamicPageList>

ordered:

<DynamicPageList>
category = Demo
mode     = ordered
</DynamicPageList>

none:

<DynamicPageList>
category = Demo
mode     = none
</DynamicPageList>

inline:

<DynamicPageList>
category = Demo
mode     = inline
</DynamicPageList>
mode=gallery

gallery は、画像ギャラリーとして出力される特別なモードです。 Extension:PageImages がインストールされていれば、ファイルページ以外ではページ画像が存在している場合にその画像が使用されます。 それ以外では、ファイル名前空間以外のページでは空白表示となります。

<DynamicPageList>
category = Demo
mode     = gallery
namespace= file
</DynamicPageList>

gallery モードは以下のオプションもサポートしています:

  • imagewidth – ギャラリー内の画像の幅。これを使用する場合は imageheight も設定した方が良い場合があります
  • imageheight – 画像の高さ
  • galleryshowfilesize – カテゴリ ページのように画像サイズを表示
  • galleryshowfilename – カテゴリ ページのようにファイル名を表示
  • imagesperrow – ギャラリー内の 1 行に表示する画像の数
  • gallerycaption – ギャラリーのキャプション

addfirstcategorydate が使用されている場合、画像のキャプションに日付が付加される。

注意: 現時点ではgallerycaptionはリンクを適用できません (が、{{CURRENTMONTHNAME}} のようなものは適用可能です)。

複雑なギャラリーの例としては、こんな感じでしょうか。

<DynamicPageList>
count=20
namespace=file
addfirstcategorydate=ymd
imagewidth=70
galleryshowfilesize=yes
galleryshowfilename=yes
imagesperrow=7
gallerycaption=Look at my pretty gallery.
mode=gallery
shownamespace=false
</DynamicPageList>

suppresserrors

suppresserrors はエラーを非表示にします。 値は true (エラーを非表示) または false (既定、エラーを表示) のいずれかです。

true:
<DynamicPageList>
category       = Dem
suppresserrors = true
</DynamicPageList>

false:
<DynamicPageList>
category       = Dem
suppresserrors = false
</DynamicPageList>

nofollow

nofollow sets rel="nofollow" on the links. This prevents spiders from getting to the page through the link from the DynamicPageList. In general this is useless, as spiders will either be able to index the page from other links, or not at all due to robots.txt/$wgDefaultRobotPolicy . In general you should not use this option unless you know what you are doing, and have a good reason. The primary usecase is that on the English Wikinews, Google News considers anything linked from the main page to be an article.

<DynamicPageList>
category       = Demo
nofollow       = true
</DynamicPageList>

googlehack

This is a hack for wikinews. Previously, Google News only considered articles with numbers in them to be news articles [1], so this appends ?dpl_id=<id of article> to the end of the urls on the list. You shouldn't use this option unless you have a good reason to (however it won't hurt anything). This replaces the showcurid option that is no longer supported.

<DynamicPageList>
category       = Demo
googlehack       = true
</DynamicPageList>

順序

ordermethod

ordermethod determines the order and date to display. The value can be:

  • categoryadd – 既定、ページが最初のカテゴリに分類された日時でソート
  • lastedit – ページが最後に編集された日時でソート
  • length – 記事のサイズ
  • created – 記事の作成日時
  • categorysortkey – 基本的に最初に指定されたカテゴリのソートキーによるアルファベット順
  • sortkeycategorysortkey の別名

lastedit は、ページが最後に更新された日時でソートされることに注意してください。 これは最後に行われた編集と同じにならない場合があります(例えば、保護レベルの変更、リンク元ページの作成や削除、呼び出されるテンプレートの変更など)。 カテゴリを指定しない場合、一部の順序付け方法の一部は機能しません—具体的には、categoryaddcategorysortkey は、category が未指定の場合に created で代替されます。

<DynamicPageList>
category             = Demo
addfirstcategorydate = true
ordermethod          = lastedit
</DynamicPageList>

アルファベット順の例:

<DynamicPageList>
category             = Demo
ordermethod          = sortkey
</DynamicPageList>

order

order にて並べ替えの昇順/降順を指定できます。 値は、descending (既定、新しい順)、ascending (古い順) のいずれかです。

<DynamicPageList>
category  = Demo
order     = ascending
</DynamicPageList>

テンプレート

テンプレート内で引数を渡したり、パーサー関数を使用したりする場合は、{{#tag: 関数を使用します:

{{#tag:DynamicPageList|
category = {{{1}}}
count    = {{#if: {{{2|}}} | 10 | 20 }}
ordermethod = sortkey
order = ascending
}}

テンプレートページ自体、‎<includeonly>タグで挟まないとカテゴリ値が空白のままのため、エラーメッセージを表示します。例を示します。

エラー: カテゴリを少なくとも1つ含めるか、名前空間を指定する必要があります!

派生の拡張機能

  • 派生の拡張機能: DPLforum はフォーラム形式で出力します。 Extension:GoogleNewsSitemap はこれに似ていますが、RSS フィードを出力します。 DynamicPageList3 は機能が強化された改良版ですが、リソース消費量が高くなります。 ウィキメディアのサイトでは使用されていません。
  • Extension:DynamicPageListEngine - 動的ページリストの機能を Scribunto モジュールで利用できるようになります。