命名空间

简介

Namespace,译作“命名空间”或“名字空间”,是 MediaWiki 的一种以前缀区分页面的方式,不同的命名空间就像公司的不同部分。其大部分属性均可在后端更改配置,且可被配置别名映射

内置命名空间

MediaWiki 默认的 18个内置命名空间:

-2:Media
通过网址查看时会被重定向至 File 命名空间;链入时链至文件的最终路径
-1:Special
特殊页面,由 MediaWiki 提供的特殊功能页面,不可被编辑
0:(主)
即一般条目的命名空间,实际命名空间名称为空,故以此表示
1:Talk
(主)命名空间的讨论页
2:User
与用户相关联
3:User talk
User 命名空间的讨论页, 与用户相关联。他人编辑时会让页面主人收到通知
4:Project
通常为 wiki 名
5:Project talk
Project 命名空间的讨论页
6:File
链入图像文件时直接显示图像,页面中除编辑的内容外还包含文件的元数据等信息;移动文件需要 movefile 权限
7:File talk
File 命名空间的讨论页
8:MediaWiki
需要 editinterface(甚至 editsitecss 或 editesitejs)权限才可编辑,可用于配置全站 CSS、JS、不同语言变体的系统消息等
9:MediaWiki talk
MediaWiki 命名空间的讨论页
10:Template
被嵌入时可以省略前缀
11:Template talk
Template 命名空间的讨论页
12:Help
帮助页面
13:Help talk
Help 命名空间的讨论页
14:Category
分类页面,其页面的分类影响分类的父分类,页面中除编辑的内容外还包含被归为此类的子分类和子页面列表;移动分类需要 move-categorypages 权限
15:Category talk
Category 命名空间的讨论页

除了以上 18 个内置命名空间外,也可以由扩展、插件或后端手动配置更多命名空间。

命名空间编号 -1、-2 为“虚拟命名”空间。虚拟命名空间与数据库中的页面不对应,由 MediaWiki 自动生成;编号 0~15 为“真实”命名空间,偶数为基本命名空间(主题空间),奇数(基本命名空间的编号 +1)为对应的讨论页(讨论命名空间)。

命名空间属性

命名空间包含 8 个属性:id(唯一整数编号)、case(大小写方式)、name(显示名称)、subpages(是否允许子页面)、canonical(规范名称)、content(是否属于内容命名空间)、nonincludable(是否不可被嵌入)、defaultcontentmodel(默认页面模型) ,可以通过例如 API 沙盒来获取每个 wiki 所配置的命名空间及其属性。

别名

命名空间可被配置别名(重定向),可通过 API 沙盒 查看,一个命名空间可有多个别名。通常非英文 wiki 会配置本地语言的别名。

内容命名空间

内容命名空间默认只包含“(主)”命名空间,其会影响默认搜索(内容页面)的范围;也会影响到部分特殊页面:Special:Random、Special:Statistics、Special:AncientPages、Special:DeadendPages、Special:FewestRevisions、Special:LonelyPages、Special:MostCategories、Special:MostInterwikis、Special:RandomPage、Special:ShortPages、Special:LongPages、Special:UncategorizedPages、Special:WithoutInterwiki;以及影响魔术词 {{NUMBEROFARTICLES}} 的统计;和影响页面被链入通知的生效范围。

获取命名空间相关

Wikitext(魔术词

变量

{{NUMBEROFARTICLES}}
获取当前 wiki 的内容页面数量
{{PAGESINNS:编号}}{{PAGESINNAMESPACE:编号}}
【高开销】根据编号获取当前 wiki 的指定命名空间的页面数量。{{PAGESINNS:0}} 与前者的不同之处在于本变量包括重定向和消歧义页面,默认被禁用。
{{NAMESPACE}}{{NAMESPACE:完整页面名称}}
获取当前或指定页面的命名空间名称
{{NAMESPACEE}}{{NAMESPACEE:完整页面名称}}
经过 MediaWiki URL 编码的前者
{{NAMESPACENUMBER}}{{NAMESPACENUMBER:命名空间名称}}
获取当前或指定命名空间的命名空间编号
{{SUBJECTSPACE}}{{ARTICLESPACE}}{{SUBJECTSPACE:完整页面名称}}{{ARTICLESPACE:完整页面名称}}
获取当前或指定页面相关的基本命名空间名称
{{SUBJECTSPACEE}}{{ARTICLESPACEE}}{{SUBJECTSPACEE:完整页面名称}}{{ARTICLESPACEE:完整页面名称}}
经过 MediaWiki URL 编码的前者
{{TALKSPACE}}{{TALKSPACE:完整页面名称}}
获取当前或指定页面相关的讨论命名空间名称
{{TALKSPACEE}}{{TALKSPACEE:完整页面名称}}
经过 MediaWiki URL 编码的前者

解析器函数

{{ns:命名空间编号或命名空间名称}}
获取指定命名空间的格式化名称
{{nse:命名空间编号或命名空间名称}}
经过 MediaWiki URL 编码的前者

DOM

<body> 会附带一个例如 ns-0 的类名,对应当前页面的命名空间编号;如果是基本命名空间,会附带一个 ns-subject 的类名;如果是讨论命名空间,则会附带一个 ns-talk 的类名。CSS 和 JS 可以通过这些类名来实现特定的需求。

JS

mw.config.get("wgCanonicalNamespace")
获取当前页面的规范命名空间名称
mw.config.get("wgCaseSensitiveNamespaces")
获取大小写敏感的命名空间编号数组
mw.config.get("wgContentNamespaces")
获取内容命名空间的编号数组
mw.config.get("wgExtraSignatureNamespaces")
获取额外的编辑工具栏中显示签名工具的命名空间编号数组(不包括内置命名空间中的讨论命名空间)
mw.config.get("wgFormattedNamespaces")
获取格式化的命名空间名称数组
mw.config.get("wgNamespaceIds")
获取命名空间编号数组
mw.config.get("wgNamespaceNumber")
获取当前页面的命名空间编号

API

通过 API 可以获取当前 wiki 的所有命名空间及其属性,在 API 沙盒中查看: MediaWiki wiki 的命名空间

参看