Manual:Using custom namespaces/zh

除了內建的空間名稱，在安裝MediaWiki時，也可以自訂空間名稱，藉以組織其他或更多種類的邏輯內容.

自訂空間名稱可利用$wgExtraNamespaces 的語法輕易地上手.

It is also possible to define alias names for custom (and also predefined) namespaces, using the $wgNamespaceAliases configuration directive.

建立自訂空間名稱
如要自訂空間名稱，請在LocalSettings.php檔案下放入適合的名稱，如：

自定義的空間名稱，必須從參數為100的數字開始定義，其後依此類推，所有的自定義空間名稱，都要有其對應的參數對照，才能正常地運作. 要注意的是，偶數代表自定義名稱的內容頁，奇數代表對應該自定義名稱的內容討論頁. It is usual to define a discussion namespace with each custom namespace, so the declaration above might be expanded to:

If you need to refer to the ID of your namespace later on in the configuration, for example for $wgNamespaceProtection, $wgNamespacesWithSubpages or an extension like Lockdown, it is recommended that you define constants for your namespace IDs:

Content namespaces
When building the site statistics page (see Special:Statistics), MediaWiki uses values stored in the database to calculate certain totals. One particular total is the "number of articles" or "number of content pages" figure.

For a page to be considered an article, or proper content, it must:


 * Be in the main namespace, or a defined content namespace
 * Not be a redirect page
 * Contain at least one internal link

When creating custom namespaces to hold additional content, it is a good idea to indicate this in the configuration. This is done via the $wgContentNamespaces configuration directive.

To extend the example above, one might add the following to LocalSettings.php:

MediaWiki will now consider pages in the "Foo" namespace to be articles, if they meet the remaining criteria, and will include them when updating the site statistics counters.

When adjusting the value of $wgContentNamespaces, it is a good idea to run the maintenance/updateArticleCount.php script to update the internal statistics cache (see: Manual:Maintenance scripts).

Dealing with existing pages
When storing page records, MediaWiki uses a namespace's numerical index, along with the remaining title text. Thus, when a page is created in a namespace that doesn't exist, e.g. "Bar:Some page", it is treated as being in the main namespace.

This can cause problems if adding a custom namespace definition for "Bar" at a later date, as MediaWiki will look for a page indexed via the proper namespace, but won't be able to find it, thus making the content inaccessible.

To correct this problem, there are two main approaches.

Move conflicting pages
If the number of pages affected is small (e.g. "Bar" held five pages created before the namespace was defined in the site configuration), then the following approach might be suitable:


 * 1) Comment out the namespace definition in the configuration file
 * 2) Access each affected page, and move it out of the pseudo-namespace, e.g. move "Bar:Some page" to "Bar2:Some page"
 * 3) Un-comment the namespace definition
 * 4) Move the affected pages back into the new namespace

Use a maintenance script
Within the maintenance directory, there is a maintenance script which performs the above operation more effectively for a large number of pages; namespaceDupes.php. It is simple to use, but as with all MediaWiki maintenance scripts, consult the available usage information first (use --help) as an option.

Use a database query
To move all pages "Bar:Some page" into namespace 100, drop the following database query:

Removing custom namespaces
The problem addressed above also occurs when a custom namespace definition is removed; MediaWiki is no longer aware of the numerical index for the namespace, and attempts to search the main namespace for the desired pages, leading to inaccessible content. This is a rare occurrence, since most sites will not need namespaces removed, but it is a problem.