跳转到内容

Template: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页面内出现“超出模板限制”的情况。

另请参阅

[编辑]