模板:When on basepage/doc
| File:Edit-copy green.svg | 此頁面是Template:When on basepage的模板文件。 此頁面可能包含了模板的使用說明、分類和其他內容。 |
{{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頁面內出現「超出模板限制」的情況。
另請參閱[編輯]
{{Ns has subpages}}