2

我有一个模板,它接受名为“名称”和“类型”的参数。

我目前正在尝试调用该模板并将一个名为 Input1 的页面的嵌入内容传递给它,该页面简单地说:

name=Thing|type=Whatsit

我这样调用模板:{{TemplateName|{{:Input1}}}}

然而,模板只是接收文本“name=Thing|type=Whatsit”。它没有将文本解析为参数,就好像我以这种方式调用它一样:

{{模板名称|名称=事物|类型=Whatsit}}

有什么办法可以诱使 MediaWiki 将页面内容视为实际参数,并在此基础上设置 {{{name}}} 和 {{{type}}}?我有很大的计划,希望能够使用另一个模板 Foreach,以这种方式创建对模板的许多调用,将 Input1、Input2 等传递给它。

4

1 回答 1

2

不能将页面内容嵌入到模板中用作参数。 MediaWiki首先解析模板表达式的结构,即'{{', '|' 和 '}}'。随后它会扩展该表达式内的模板,但如果此扩展包含“|” 它被解释为文字'|' 而不是参数分隔符。因此参数的数量不能再改变。此行为曾经是使{{!}}模板正常工作所必需的,该模板用于插入文字“|” 在模板参数中。

但是,通过更改嵌入的顺序,您仍然可以完全按照您的意愿行事。 模板参数可用于构造另一个模板的名称。因此,您可以将模板的名称作为参数传递给包含您的参数的页面:{{:Input1|TemplateName}}. 您的“输入”页面将被写为:

{{{{{1|Standard}}}
|Name=Input1
|Param1=Value1
|Param2=Value2
}}

因此,将包含参数的页面包含在内{{:Input1|TableView}}会产生所需的结果:

{{TableView
|Name=Input1
|Param1=Value1
|Param2=Value2
}}
于 2017-01-06T06:14:37.857 回答