我有一个模板,它接受名为"name"one_answers"type"的参数。
我目前正试图调用该模板,并将一个名为Input1的页面的transluded内容传递给它,该页面简单地说:
name=Thing|type=Whatsit
我以这种方式调用模板:{{TemplateName|{{{:Input1}}}}
然而,模板只是接收文本"name=Thing|type=Whatsit"。它并没有将文本解析为参数,就好像我以这种方式调用它一样:
{{TemplateName|name=Thing|type=Whatsit}}
有没有什么方法可以说服MediaWiki将页面内容视为实际参数,并在此基础上设置{{名称}}和{类型}}}?我有一个大计划,可以使用另一个模板Foreach,以这种方式创建对模板的许多调用,将其传递给Input1、Input2等。
不可能将要用作模板参数的页面内容进行transcludeMediaWiki首先解析模板表达式的结构,即"{{"、"|"one_answers"}}"。随后,它展开该表达式中的模板,但如果此展开包含"|",则会将其解释为文字"|"而不是参数分隔符。因此,参数的数量不能再改变。这种行为曾经是使{{!}}
模板工作所必需的,该模板用于在模板参数中插入文字"|"。
但是,通过更改跨区的顺序,您仍然可以随心所欲模板参数可用于构造另一个模板的名称。因此,您可以将模板的名称作为参数传递给包含参数的页面:{{:Input1|TemplateName}}
。您的"输入"页面将被写为:
{{{{{1|Standard}}}
|Name=Input1
|Param1=Value1
|Param2=Value2
}}
因此,将包含参数的页面转换为{{:Input1|TableView}}
将产生所需的结果:
{{TableView
|Name=Input1
|Param1=Value1
|Param2=Value2
}}