模板:When on basepage/doc

維基百科,自由的百科全書
跳至導覽 跳至搜尋

{{When on basepage}}是一個元模板,它幫助其他模板檢測它們是否位於基頁面(即頁面名稱匹配模式「X:X」的頁面)、子頁面(「X:X/X」)或子子頁面(「X:X/X/X」)上。

檢測頁面是否為子頁面的另一種方法是結合解析器函數#ifeq:#titleparts,參閱下面的用於簡單文字的替代方案

用法[編輯]

{{When on basepage|基页面结果|子页面结果|子子页面结果|page=页面名称}}

例如,在頁面「User:Example」上使用{{When on basepage|Basepage|Subpage}}將返回:Basepage
而在「User:Example/page」(或「User:Example/page/page」、「User:Example/page/page/page」等)上,它將返回:Subpage

在諸如「User:Example/page/page」(或「User:Example/page/page/page」等)的子子頁面上,{{When on basepage|Basepage|Subpage|Subsubpage}}將返回:Subsubpage

使用空參數來指定對特定類型頁面不採取任何操作。例如,{{When on basepage|Basepage|Subsubpage}}在「User:Example/page」上將不返回任何內容,但在「User:Example/page/page」、「User:Example/page/page/page」等頁面上將返回「Subsubpage」(如果在「User:Example」上則返回「Basepage」)。

處理等號(=)[編輯]

如果參數值包含等號(=),請使用編號參數,即:

{{When on basepage|1=基頁面結果|2=子頁面結果|3=子子頁面結果}}

page參數[編輯]

page參數用於測試/演示。例如:

{{When on basepage |基頁面結果|子頁面結果|page=User:Example/test}}

無論上述代碼放置在何處,它都將返回:(子頁面結果)
(因為「User:Example/test」是一個子頁面)。該頁面不必存在。

如果page留空(|page=)或未定義,則使用模板被嵌入的頁面(即{{PAGENAME}})。

page也接受變量,例如{{When on basepage|基頁面結果|子頁面結果|page={{{page|}}} }}

技術說明[編輯]

此模板檢測所有命名空間中的子頁面,包括那些未啟用MediaWiki子頁面功能的命名空間。

用於簡單文字的替代方案[編輯]

可以不使用其他模板來檢測子頁面,而是使用標題分割解析器函數#titleparts配合#ifeq

{{#ifeq:{{#titleparts:{{PAGENAME}}|1|1}}|{{PAGENAME}}
 | [...基页面上的代码...]
 | [...子页面上的代码...]
}}

例如,可以通過使用#ifeq#titleparts的類似標記來檢查頁面是否為/sandbox版本:

{{#ifeq: {{#titleparts:{{PAGENAME}}|1|1}} | {{PAGENAME}}
| {{documentation}}
| {{template sandbox notice}}
}}

這種簡單的邏輯之所以有效,是因為Template:Template sandbox notice在顯示沙盒通知之前也會檢查頁面名稱是否包含「/sandbox」;否則,任何其他子頁面都不會顯示額外文字。通過避免使用模板,並使用單個#ifeq,處理過程僅使用+2個擴充深度級別,而不是+7個級別,並且避免了在複雜的/doc頁面內出現「超出模板限制」的情況。

另請參閱[編輯]