Manual:Using custom namespaces/ja

組み込みの名前空間に加えて、内容を分離してより論理的に整理できるようにするために、カスタムの名前空間を MediaWiki に追加できます.

構成ディレクティブを使用することで、カスタムの名前空間は管理が簡単です. 構成ディレクティブを使用して、カスタム (および定義済み) 名前空間のエイリアスを定義することも可能です. Some extensions make it easy for you to create custom namespaces. Examples include and.

カスタム名前空間の作成
名前空間を追加登録するには、 ファイルの  グローバル変数に追加して登録します. すべての名前空間は、この配列内で一意の数値インデックスを必要とします. 単純なカスタム名前空間の作成の例として、「Foo」名前空間 3000 とそれに付随する「Foo_talk」名前空間を定義するには、次の数行を  に追加します.


 * 未使用の番号を選択
 * 慣習として、100-199の番号の名前空間はサイト固有の名前空間として予約されていますが、この慣習に従わないいくつかの拡張機能も存在します. 拡張書き込み機能では、最大 32767 までの数値を使用します.  インデックスを選ぶ際には、すでに拡張機能で使用されている既定の名前空間に入っている番号は避けるべきです.  3000から4999までの数字は、システム管理者が独自の名前空間を定義するために予約されています.  (また、すでに拡張機能で使用されている既定の名前空間にある名前空間nameは避けたいところです).


 * 偶数と次の奇数
 * 上の例では、名前空間の配列のインデックスが 3000 であることに注意してください.
 * 偶数の名前空間は、主となる名前空間を示します.
 * 奇数の名前空間は、一つ前の数字の名前空間に関連する議論（会話）をする名前空間を示します.


 * トーク名前空間も作成
 * 通常、議論の「トーク」名前空間は、各カスタム名前空間と共に作成します. この例では、ページの移動 を "Foo" 名前空間に移動すると、関連するトークページがあれば移動するように促され、移動することを選択すると、MediaWiki はそのトークページを "Foo talk" に配置します.


 * 空白を含めない
 * 名前空間を登録する際は、スペースの代わりにアンダースコアを使ってください. “My Namespace”は、名前空間の登録においては無効ですので、代わりに“My_Namespace”を使ってください.

大文字の部分ではハイフンを使用できませんが、接頭辞タイトルに安全に追加できます. 例:
 * ハイフンを含めない


 * 選択した番号に名前を付ける
 * この例では、名前空間IDに定数を定義しています. これは、後ほど 、、などの設定で、これらの名前空間を参照できるようにするためのものです.

新しい名前空間の追加設定を構成することもできます.


 * 早めに行う
 * の操作はMediaWikiの初期設定の間に完了しなければなりません. すなわち、拡張機能などが新しく作成されたカスタム名前空間で動作する場合、それぞれの拡張機能を呼び出す前にそれらを定義し名前を付けることを確認します. たとえば、それは のような初期化後のフックで操作されることはありません.


 * URLプロトコルとの衝突に注意
 * MediaWikiのリンクコードは 変数で定義された、いくつかのURLプロトコルについて知っています.  名前空間名がこれらのプロトコルと同一である場合、カスタム名前空間のページへの wikilinks を作成するのに苦労するでしょう.  これは、誰かが "News" 名前空間を作成しようとしたときに最もよく発生するもので、  は NNTP ニュースグループの URL プロトコルだからです.
 * この問題を回避するには、LocalSettings.phpに以下のコードを追加して、関連するURLプロトコルの登録を解除します（ を削除したいプロトコルの小文字の名前で置き換えます）.

拡張機能
Extensions often add their own namespaces, such as the extension's "Topic" namespace. An extension can unconditionally add to  as described above, or if its namespace registration is conditional (for example  only defines its "Schema" namespace on the wiki where it stores schemas), then it can add a handler function for the  hook that decides what to do.

The timing of registering extensions is subtle. Functions that extensions register with are executed too late to register additional namespaces. So extensions should bind the  hook at file scope (in  ) and check there whether the wiki should activate the extra namespace or not. Extensions can configure namespace permissions and content handlers unconditionally at file scope since they do not require the namespace to actually be created.

The new  registration system has a   key for an extension to list its namespaces that should always exist. From the extension:

It also supports the  hook.

コンテンツ名前空間
サイトの統計ページを構築するとき(Special:Statisticsを参照)、MediaWikiはある合計値を計算するためにデータベースに保存された変数を使用します. 一つの特定の合計値は"記事の数"もしくは"内容ページの数"の合計値です.

記事もしくは適切な内容としてページがみなされるようにするために、次のことをしなければなりません:


 * 標準名前空間内、または定義済みの本文名前空間内に配置する
 * リダイレクト ページではないように
 * 少なくとも1つ内部リンクを含む

追加の内容を保持するカスタムの名前空間を作成するとき、コンフィギュレーションにこれを示すことはよいアイディアです. これは 構成ディレクティブ経由で行われます.

上記の例を拡張するために、次の内容を  に追加します:


 * または

これでMediaWikiはページが含んでいる基準(criteria)と合う場合に"Foo"名前空間にあるページを記事と見なすようになり、サイト統計カウンターをアップデートするときにインクルードされます.

メンテナンス スクリプトの実行

 * の値を調整するとき、内部の統計キャッシュをアップデートする スクリプトを実行することはよいアイディアです (見る： ).

カスタム名前空間が必要な場合
There are several reasons you might want this:


 * A custom namespace can be used to hold content that should not be shown on the search results page, for example pages that are used only for transclusion.
 * Certain namespaces require additional privilege(s) for editing.
 * You want certain namespaces not to be subjected to certain limitations or default settings ( for example)
 * A uniform prefix for specific content(s), which is searchable for that namespace only
 * If you're a MW developer, sometimes you need to have a custom namespace for your extension(s)

既存のページを取り扱う
ページレコードを保存するとき、MediaWikiはタイトルのテキストに加えて、名前空間の数値インデックスを使用します. ページが存在しない名前空間に作成されたとき、例えば、"Bar:Some page"、メインの名前空間にあるものとして取り扱われます.

"Bar"のためにカスタムの名前空間を後で追加する場合、このことによって問題を起こす可能性があります. MediaWikiは適切な名前空間経由でインデックスされたページを探しますが、見つからないので、内容にアクセスできません.

この問題を修正するために、3つの主要なアプローチがあります.

衝突するページを移動させる
影響されるページ数が小さい場合(例えば、サイトコンフィギュレーションで名前空間が定義される前に"Bar"は5つのページを持つ場合、)次のアプローチが適用できます:


 * 1) コンフィギュレーションファイルにある名前空間の定義をコメントアウトする
 * 2) それぞれ影響されるページにアクセスをして、擬似名前空間に移動させる、例えば、Bar:Some page"を"Bar2:Some page"に移動させる
 * 3) 名前空間の定義のコメントを解除する
 * 4) 影響されるページを新しい名前空間に戻す

メンテナンス スクリプトの使用
maintenanceディレクトリ内に、大規模のページに対してより効果的に上記のオペレーションを実行するメンテナンススクリプトがあります; . シンプルですが、すべてのMediaWikiメンテナンススクリプトと同様に、最初に利用可能な使い方情報( を使用します)をオプションとして最初に尋ねることができます.

データベース クエリを使用する
To move all pages "Bar:Some page" into namespace 3000, make the following database query:

To handle discussion pages:

After such fiddling, run the script and the  script to update internal links and search results in your wiki. Note that external search engines like Google will take some time to update their index.

カスタム名前空間の除去
上記で書かれた問題はカスタム名前空間が削除されるときにも起こります; MediaWikiは名前空間のための数値インデックスをもはや認識しないので、望むページのためにメインの名前空間を探そうとしますが、内容にアクセスできません. 多くのサイトではremoved名前空間が必要ではないので、これはほとんど起こりません. しかし問題があります. (See mailing list discussion).

次の例は と Topic 名前空間を削除する方法です:


 * Uninstall Flow
 * Temporarily add $wgExtraNamespaces[2600] = 'Topic'; to the config
 * Use deleteBatch.php to delete all pages in the Topic namespace
 * Remove the $wgExtraNamespaces config

Renaming custom namespaces
Suppose that you need to rename custom namespace "Foo" to "New" without performing a mass move of pages. The easiest way to achieve this is to preserve the namespace ID (here " ") as well as the namespace constant (here " "), modify the (visible) namespace title and add the old one as an alias.


 * change


 * to

名前空間の衝突の回避
In order for you to avoid namespace conflicts e.g. your namespace has the same number as a namespace defined by an extension, the extension namespace list shows you which numbers to avoid to prevent conflicts.

Defining, , $wgContentNamespaces or for an ID not associated to any existing namespace in $wgExtraNamespaces doesn't break the wiki; MediaWiki gracefully ignores such configurations.

名前空間のスタイル設定

For example, to set the background color of pages in a particular namespace (and its associated talk namespace) you can add the following code to your common.css:

where  is the namespace's index and   is the color you want as its background color.

関連項目

 * for management of namespaces
 * Namespace manager　元々はMW1.6-wikidataとサクセサのために提案されました. 現在はOmegaWikiプロジェクトによって使用されています.
 * - to use a different skin in a namespace
 * - の修正バージョンで、namespace managerを特別ページとして提供します.
 * - 名前空間へのアクセスを制御する
 * Extension namespace registration
 * - 名前空間へのアクセスを制御する
 * Extension namespace registration