跳转到内容

模組:Namespace pagename/doc

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是Module:Namespace pagename的文档页面

本模組根據頁面所在的命名空間與頁面的實際內容,綜合判斷並輸出該頁面的類型,例如「模板文件」、「用戶沙盒」、「模組重新導向」。命名空間名稱取自 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 中對應的設定項。

  1. 解析輸入。未指定或為空字串時取目前頁面;否則除非指定 forcePage,先嘗試解析成命名空間,失敗才當成頁面名稱。頁面位於條目或討論命名空間時,再交給 Module:Namespace 檢查是否為偽命名空間。
  2. 跨語言連結(title.isExternal)→ 輸出「跨語言連結」。
  3. 偽命名空間→ 交給 Module:Namespace 輸出捷徑名稱,不再往下判斷。
  4. 取得命名空間名稱(Module:Namespace)。
  5. 若輸入是命名空間而非頁面,或指定了 skipCheckPageType → 輸出「命名空間名稱+預設字尾」(DefaultSuffixList),結束。
  6. 固定沙盒頁名(SandboxPageNames,以及 User: 下的 ×××/沙盒)→ 沙盒。此步在命名空間白名單之前,因此分類、檔案等命名空間的固定沙盒也認得。
  7. 編輯提示/電郵提示(NoticeRules)→ 直接取代整個輸出,不加命名空間名稱。
  8. 模組討論頁的 /testcases 子頁→ 測試樣例。模組討論命名空間不在下一步的白名單內,因此這項特例排在白名單檢查之前。
  9. 命名空間不在 EnablePageTypeNamespaces → 輸出「命名空間名稱+預設字尾」,結束。目前只有用戶、專案、檔案、模板、草稿、模組六個命名空間會繼續往下判斷,所以 Help:Foo/doc 只會輸出「幫助頁」。
  10. 內容模型(ContentModelMap)→ 樣式/工具/數據,即 CSS、JavaScript、JSON 頁面。
  11. 重新導向(title.isRedirect)→ 重新導向。
  12. 子頁面名稱(SubpageRules)→ 文件/沙盒/測試樣例/臨時頁/說明頁。子頁面名稱必須列在該類型的 names 之中,適用的命名空間則由 AllowTemplateType、AllowTempType,或該類型自訂的 matcher 決定。
  13. 頁面內容特徵(ContentRules)→ 文件/沙盒/測試樣例,依頁面是否含有 {{Documentation subpage}} 等標記判斷;指定 skipCheckContent 時略過此步。
  14. 以上皆未命中 → 輸出「命名空間名稱+預設字尾」。

子頁面名稱與頁面內容都沒有命中時,輸出只有「命名空間名稱+預設字尾」,例如 Template:Foo/bar 輸出「模板」。

參見

[编辑]