模块:Namespace pagename/doc
外观
这是Module:Namespace pagename的文档页面
| 此页面是Module:Namespace pagename的模块文档。 此页面可能包含了模板的使用说明、分类和其他内容。 |
| 此模块文档被引用于约190,000个页面,占全部页面的2%。 为了避免造成大规模的影响,所有对此模块文档的编辑应先于沙盒或测试样例上测试。实施修改前,建议先在讨论页发起讨论。 模板引用数量会自动更新。 |
本模块根据页面所在的命名空间与页面的实际内容,综合判断并输出该页面的类型,例如“模板文档”、“用户沙盒”、“模块重定向”。命名空间名称取自 Module:Namespace,页面类型的名称与判定规则在 Module:Namespace pagename/data 维护。
包装模板为 Template:Namespace pagename(捷径 {{NSPN}}),测试样例见 Template:Namespace pagename/testcases。
用法
[编辑]Wikitext
[编辑]main
[编辑]{{#invoke:Namespace pagename|main|語言|頁面名稱或命名空間}}
| 位置参数 | 具名参数 | 说明 |
|---|---|---|
|1= |
|lang= |
语言代码,如 zh-hant、zh-hans、zh-tw、en。省略或留空时取用户的界面语言,无法对应的语言代码会回退为英文。
|
|2= |
|pageOrNs= |
要判断的页面名称或命名空间。省略或留空时使用目前页面。 |
| - | |forcePage= |
强制把第二参数解释成页面名称,不尝试解析成命名空间。 |
| - | |skipCheckPageType= |
不判断页面类型,只输出“命名空间名称+默认字尾”,效果形同第二参数传的是命名空间。 |
| - | |skipCheckContent= |
不读取页面内容来判断类型。title:getContent() 会计入解析器的昂贵函数配额,大量呼叫时可用此参数节省开销。
|
三个开关参数经 Module:Yesno 解读,填 yes、1、true 等皆可。
- 第二参数会优先解析成命名空间:纯数字且该编号存在时视为命名空间编号,否则
{{ns:}}能解析的名称(含结尾冒号,如Template:)也视为命名空间。因此要指向名为3或維基百科的条目,请改传:3、:維基百科,或加上|forcePage=yes。 - 传入命名空间时没有页面可供检查,输出一律是“命名空间名称+默认字尾”。
- 无法解析成合法页面名称时输出红字错误讯息,不会抛出 Lua 错误。
- 命名空间名称取自 Module:Namespace 的
_namespaceName(不是-display),因此4输出“项目”而非“维基百科”、8输出“界面”而非“MediaWiki”。
传入命名空间的示例:
{{#invoke:Namespace pagename|main|zh-hant|0}} <!-- 條目 -->
{{#invoke:Namespace pagename|main|zh-hant|1}} <!-- 討論頁 -->
{{#invoke:Namespace pagename|main|zh-hant|2}} <!-- 用戶頁面 -->
{{#invoke:Namespace pagename|main|zh-hans|2}} <!-- 用户页 -->
{{#invoke:Namespace pagename|main|zh-hant|4}} <!-- 專案頁面 -->
{{#invoke:Namespace pagename|main|zh-hant|8}} <!-- 介面頁 -->
{{#invoke:Namespace pagename|main|zh-hant|12}} <!-- 幫助頁 -->
{{#invoke:Namespace pagename|main|zh-hant|10}} <!-- 模板 -->
{{#invoke:Namespace pagename|main|zh-hant|828}} <!-- 模組 -->
{{#invoke:Namespace pagename|main|zh-hant|-1}} <!-- 特殊頁面 -->
{{#invoke:Namespace pagename|main|zh-hant|Template}} <!-- 模板 -->
{{#invoke:Namespace pagename|main|zh-hant|模板}} <!-- 模板 -->
{{#invoke:Namespace pagename|main|en|2}} <!-- User page -->
{{#invoke:Namespace pagename|main|en|828}} <!-- Module -->
传入页面名称的示例:
{{#invoke:Namespace pagename|main|zh-hant|Template:Namespace pagename}} <!-- 模板 -->
{{#invoke:Namespace pagename|main|zh-hant|Template:Namespace pagename/doc}} <!-- 模板文件 -->
{{#invoke:Namespace pagename|main|zh-hant|Module:Namespace/testcases}} <!-- 模組測試樣例 -->
{{#invoke:Namespace pagename|main|zh-hant|Module:Namespace/sandbox}} <!-- 模組沙盒 -->
{{#invoke:Namespace pagename|main|zh-hant|Template:NSPN}} <!-- 模板重新導向 -->
{{#invoke:Namespace pagename|main|zh-hant|Template:沙盒}} <!-- 模板沙盒 -->
{{#invoke:Namespace pagename|main|zh-hant|Category:沙盒}} <!-- 分類沙盒 -->
{{#invoke:Namespace pagename|main|zh-hant|User:Example/沙盒}} <!-- 用戶沙盒 -->
{{#invoke:Namespace pagename|main|zh-hant|User:Example/common.css}} <!-- 用戶樣式 -->
{{#invoke:Namespace pagename|main|zh-hant|User:Example/common.js}} <!-- 用戶工具 -->
{{#invoke:Namespace pagename|main|zh-hant|Module:Sandbox/test.json}} <!-- 模組數據 -->
{{#invoke:Namespace pagename|main|zh-hant|Template:Namespace pagename/temp}} <!-- 模板臨時頁 -->
{{#invoke:Namespace pagename|main|zh-hant|Template:Editnotices/Page/Foo}} <!-- 編輯提示 -->
{{#invoke:Namespace pagename|main|zh-hant|User:Example/Editnotice}} <!-- 編輯提示 -->
{{#invoke:Namespace pagename|main|zh-hant|User:Example/Emailnotice}} <!-- Example的電郵提示(含用戶連結) -->
{{#invoke:Namespace pagename|main|zh-hant|LTA:Foo}} <!-- 持續出沒的破壞者捷徑 -->
{{#invoke:Namespace pagename|main|zh-hant|Talk:LTA:Foo}} <!-- 持續出沒的破壞者討論捷徑頁 -->
{{#invoke:Namespace pagename|main|zh-hant|en:Wikipedia:Templates}} <!-- 跨語言連結 -->
开关参数与特殊情形的示例:
{{#invoke:Namespace pagename|main|zh-hant|維基百科}} <!-- 專案頁面(被當成命名空間名稱) -->
{{#invoke:Namespace pagename|main|zh-hant|維基百科|forcePage=yes}} <!-- 條目 -->
{{#invoke:Namespace pagename|main|zh-hant|:3}} <!-- 條目 -->
{{#invoke:Namespace pagename|main|zh-hant|3|forcePage=yes}} <!-- 條目 -->
{{#invoke:Namespace pagename|main|zh-hant|9999}} <!-- 條目(無此命名空間,當成頁面名稱) -->
{{#invoke:Namespace pagename|main|zh-hant|Template:Namespace pagename/doc|skipCheckPageType=yes}} <!-- 模板 -->
{{#invoke:Namespace pagename|main|zh-hant|Help:Foo/doc}} <!-- 幫助頁(幫助命名空間不檢測頁面類型) -->
{{#invoke:Namespace pagename|main|zh-hant|Draft:Foo/sandbox}} <!-- 草稿(草稿命名空間不檢測沙盒) -->
{{#invoke:Namespace pagename|main|zh-hant|<<<}} <!-- 紅字錯誤:頁面名稱「<<<」無效。 -->
Lua
[编辑]以下示例中隐含
local mNSPN = require('Module:Namespace pagename')
_namespace_pagename
[编辑]-- @param string|nil [lang]
-- @param string|number|nil [pageOrNs]
-- - string:頁面(註:此函數不檢查是否有效)或(偽)命名空間的名字
-- - number:命名空間數字
-- @param table|nil [cfg]
-- @param boolean|nil [cfg.forcePage] 讓模組強行把輸入解釋成頁面
-- @param boolean|nil [cfg.skipCheckPageType] 抑制檢測頁面類型,效果形同 pageOrNs 不是傳頁面
-- @param boolean|nil [cfg.skipCheckContent] 抑制使用頁面內容檢測頁面類型
-- @return string
mNSPN._namespace_pagename(pageOrNs, lang, cfg)输入无效时返回 Module:Error 产生的错误字符串,不会抛出错误。
示例:
mNSPN._namespace_pagename('zh-hant', 828) -- "模組"
mNSPN._namespace_pagename('zh-hant', 'Module:Namespace/doc') -- "模組文件"
mNSPN._namespace_pagename('zh-hant', 'Template:NSPN') -- "模板重新導向"
mNSPN._namespace_pagename('zh-hant', 'LTA:Foo') -- "持續出沒的破壞者捷徑"
mNSPN._namespace_pagename('zh-hant') -- 目前頁面的類型
-- 不讀取頁面內容,只看命名空間、內容模型與子頁面名稱
mNSPN._namespace_pagename('zh-hant', 'Template:Foo/bar', { skipCheckContent = true })
-- 強制當成頁面名稱
mNSPN._namespace_pagename('zh-hant', '維基百科', { forcePage = true }) -- "條目"
判定顺序
[编辑]了解输出为何如此,通常只需要照下列顺序往下读,第一个命中的规则就是结果。括号内是 Module:Namespace pagename/data 中对应的设定项。
- 解析输入。未指定或为空字符串时取目前页面;否则除非指定
forcePage,先尝试解析成命名空间,失败才当成页面名称。页面位于条目或讨论命名空间时,再交给 Module:Namespace 检查是否为伪命名空间。 - 跨语言链接(
title.isExternal)→ 输出“跨语言链接”。 - 伪命名空间→ 交给 Module:Namespace 输出捷径名称,不再往下判断。
- 取得命名空间名称(Module:Namespace)。
- 若输入是命名空间而非页面,或指定了
skipCheckPageType→ 输出“命名空间名称+默认字尾”(DefaultSuffixList),结束。 - 固定沙盒页名(
SandboxPageNames,以及User:下的×××/沙盒)→ 沙盒。此步在命名空间白名单之前,因此分类、文件等命名空间的固定沙盒也认得。 - 编辑提示/电邮提示(
NoticeRules)→ 直接取代整个输出,不加命名空间名称。 - 模块讨论页的
/testcases子页→ 测试样例。模块讨论命名空间不在下一步的白名单内,因此这项特例排在白名单检查之前。 - 命名空间不在
EnablePageTypeNamespaces→ 输出“命名空间名称+默认字尾”,结束。目前只有用户、项目、文件、模板、草稿、模块六个命名空间会继续往下判断,所以Help:Foo/doc只会输出“帮助页”。 - 内容模型(
ContentModelMap)→ 样式/工具/数据,即 CSS、JavaScript、JSON 页面。 - 重定向(
title.isRedirect)→ 重定向。 - 子页面名称(
SubpageRules)→ 文件/沙盒/测试样例/临时页/说明页。子页面名称必须列在该类型的names之中,适用的命名空间则由AllowTemplateType、AllowTempType,或该类型自定义的matcher决定。 - 页面内容特征(
ContentRules)→ 文件/沙盒/测试样例,依页面是否含有{{Documentation subpage}}等标记判断;指定skipCheckContent时略过此步。 - 以上皆未命中 → 输出“命名空间名称+默认字尾”。
子页面名称与页面内容都没有命中时,输出只有“命名空间名称+默认字尾”,例如 Template:Foo/bar 输出“模板”。
参见
[编辑]- Module:Namespace pagename/data-页面类型名称与判定规则
- Module:Namespace-命名空间名称与伪命名空间判断
- Module:Namespace/data-命名空间名称的资料
- Template:Namespace pagename、Template:NSPN-包装模板
- Template:Namespace pagename/testcases-测试样例