Manual:Using custom namespaces/zh
每一个 MediaWiki 的安装实例都可以在内建名字空间的基础之上增添自定的名字空间,进一步将其内容分割,增强组织的逻辑性。通过“$wgExtraNamespaces”指令可以很容易地管理自定名字空间。
Contents |
[edit] 建立自定名字空间
在“LocalSettings.php”中添加自定名字空间,例如:
$wgExtraNamespaces[100] = "Foo";
注意,每一个名字空间都有一个数值编号,自定名字空间应从 100 开始。还要注意每一个偶数编号对应名字空间本身,奇数编号对应名字空间的讨论名字空间。通常一个自定名字空间会与它的讨论名字空间一起建立,因此,上面的代码可能扩展为:
$wgExtraNamespaces[100] = "Foo"; $wgExtraNamespaces[101] = "Foo_talk";
如果需要在其它地方使用自定名字空间的编号,最好为编号设定一个常量编号:
define("NS_FOO", 100); define("NS_FOO_TALK", 101); $wgExtraNamespaces[NS_FOO] = "Foo"; $wgExtraNamespaces[NS_FOO_TALK] = "Foo_talk";
阻止除了“sysops”以外的人对“Foo”名字空间进行修改,并开启“Foo”的子页面功能,这样做:
# 建立名字空间 define("NS_FOO",100); define("NS_FOO_TALK",101); $wgExtraNamespaces[NS_FOO] = "Foo"; $wgExtraNamespaces[NS_FOO_TALK] = "Foo_talk"; # 保护名字空间 $wgNamespaceProtection[NS_FOO] = Array("editfoo"); $wgNamespacesWithSubpages[NS_FOO] = true; $wgGroupPermissions['*']['editfoo'] = false; $wgGroupPermissions['sysop']['editfoo'] = true;
[edit] 内容名字空间
一个内容页面必须符合如下条件:
- 在主名字空间或一个内容名字空间
- 非重定向页面
- 至少一个内部链接
通过“$wgContentNamespaces”设定一个自定名字空间为内容名字空间。例如在 “LocalSettings.php“ 中加入如下内容:
$wgContentNamespaces[] = 100;
会将编号为“100”的名字空间设定为内容空间。
[edit] Why you would want a custom namespace
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.
[edit] 处理已存在的页面
在数据库中,页面是通过名字空间编号与页面名称进行索引的。如果在不存在的名字空间中建立了一个页面,例如“Bar:Some page”,它将被视为主名字空间中名称为“Bar:Some page”的页面。如果之后建立了“Bar”名字空间则会出现问题:查找“Bar:Some page”页面时,会因为在“Bar”名字空间中不存在“Some page”页面而失败。
有三种方法消除这样的错误:
[edit] 移动页面
当上述错误页面数量很少时,可以进行如下操作:
- 将出现错误的名字空间从配制文件中注释掉
- 依次将每个错误页面从先前的名字空间中移出,如“Bar:Some page”移动为“Bar2:Some page”。
- 将配制文件恢复原样
- 最后将移动的页面移回正确的名字空间
[edit] 使用维护脚本
在“maintenance”目录中有一个叫“namespaceDupes.php”的脚本可以处理这个问题,其使用方法很简单,请用“--help”选项调用脚本来显示其使用说明。
[edit] 使用数据库查询
可以用如下数据库查询将所有在主名字空间的“Bar:XXXX”页面移动到编号为“100”的名字空间:
UPDATE page SET page_title = REPLACE(page_title, 'Bar:', ''), page_namespace = 100 WHERE `page_title` LIKE 'Bar:%' AND page_namespace=0
[edit] 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.
[edit] See also
- $wgNamespacesToBeSearchedDefault
- Namespace manager as originally proposed for MW1.6-wikidata and its successors. Currently in use by the OmegaWiki project.
- Extension:SpecialNamespaces, a modified version of the special:interwiki extension which changes it to provide a namespace manager as a special page.
- Extension:NamespacePermissions and Extension:Lockdown to control access to namespaces
- Maintenance scripts
| Language: | English • Deutsch • 日本語 • 中文 |
|---|
