简介
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
- 旧称 Image,链入图像文件时直接显示图像,页面中除编辑的内容外还包含文件的元数据等信息;移动文件需要 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 的命名空间