MediaWiki模板继承参数。

MediaWiki模板继承参数。,mediawiki,mediawiki-templates,Mediawiki,Mediawiki Templates,是否可以获取一个模板以从另一个模板继承参数?我想不出更好的方式来表达这个问题,所以请允许我举个例子 假设您有两个模板{{test1}}和{{test2}}正在一个名为“测试页面”的页面上使用 模板:Test1: {{{par1}}}<br> {{{par2}}}<br> {{test2}} <!--{{test2|par3={{{par3}}}|par4={{{par4}}}}}--> {{{par3}}}<br> {{{par4}}}<b

是否可以获取一个模板以从另一个模板继承参数?我想不出更好的方式来表达这个问题,所以请允许我举个例子

假设您有两个模板
{{test1}}
{{test2}}
正在一个名为“测试页面”的页面上使用

模板:Test1:

{{{par1}}}<br>
{{{par2}}}<br>
{{test2}}
<!--{{test2|par3={{{par3}}}|par4={{{par4}}}}}-->
{{{par3}}}<br>
{{{par4}}}<br>
{{test1|par1=aaa|par2=bbb|par3=ccc|par4=ddd}}
所以我想让它显示出来:

aaa
bbb
ccc
ddd

通常的做法是在
模板:Test1
中包含注释掉的行。但是,有没有办法让它自动传递参数?对于这种普通的东西,显式地说
par3={{{{{par3}}}
并不是问题,但是当模板变得更复杂时,它可能会非常有用。任何提示都非常感谢

您试图描述的是参数转发。不,仅使用mediawiki模板不可能做到这一点

正在开发的新Lua引擎(可作为扩展:Lua进行测试,最终目标是成为核心的一部分)似乎使这成为可能。

您可以使用

{{test2|{{{arg1}}}={{{par1}}}|{{{arg2}}}={{{par2}}}}}
test1
中,将其称为

{{test1|arg1=par1|arg2=par2|par1=foo|par2=bar}}

但是,只要等Lua一等,你就可能省下相当多的理智。(它已经部署在一些较小的Wikipedia上,并将在3月份部署在all上,因此等待时间不长。)

首先,您的Test1模板调用Test2而不使用任何参数是没有意义的。您将其作为{{test2}}调用(无参数)

如果您想要页面全局变量,我建议使用Mediawiki变量插件。

此外,使用垂直条“默认”模板参数是一种良好的做法,例如{{{par1 |}}}或{{{par2 | None}}}}。否则,如果未给出参数,则生成的wikitext将是带大括号的参数名称。例如:{{{par1}}}如果没有给出该参数,则返回一个空字符串,但是{{{{par1}}}如果没有参数,则实际生成“{{par1}}}”作为字符串,这可能没有用

回到使用变量的示例,我已经修改了您的示例(par1是进入test1模板的参数,par2是进入test2模板的参数):

模板test1变为:

{{{par1|}}}<br/>
{{#vardefine: par2|{{{par2|}}} }}
{{test2}}
{{{par1}}}
{{{vardefine:par2}{{{{par2}}} {{test2}}
模板test2变为:

{{#var:par2}}<br/>
{{{var:par2}}

Darnit。谢谢你的回答和补充信息!