是否可以从另一个模板继承参数?我想不出更好的方式来表达这个问题,所以请允许我举个例子。
假设您有两个模板{{test1}}
和{{test2}}
,它们正在一个名为"测试页"的页面上使用。
模板:Test1:
{{{par1}}}<br>
{{{par2}}}<br>
{{test2}}
<!--{{test2|par3={{{par3}}}|par4={{{par4}}}}}-->
模板:Test2:
{{{par3}}}<br>
{{{par4}}}<br>
测试页面:
{{test1|par1=aaa|par2=bbb|par3=ccc|par4=ddd}}
所以我想让它显示:
aaa
bbb
ccc
ddd
这样做的正常方法是包括Template:Test1
中被注释掉的行。有没有办法让它自动传递参数呢?对于这种平凡的东西,明确地说par3={{{par3}}}
是没有问题的,但是当模板变得更加复杂时,它可能真的很有帮助。任何提示都是非常感激的。
你想描述的是参数转发。不,仅使用mediawiki模板是不可能的。
正在开发中的新Lua引擎(可作为扩展:Lua进行测试,最终目标是成为核心的一部分)似乎使这一切成为可能。
可以使用
{{test2|{{{arg1}}}={{{par1}}}|{{{arg2}}}={{{par2}}}}}
将test1
中的命名为
{{test1|arg1=par1|arg2=par2|par1=foo|par2=bar}}
但是你可以通过等待Lua来节省相当多的理智。(它已经部署在一些较小的维基百科上,并将在3月份部署在所有维基百科上,所以不会等待很长时间。)
首先,没有参数的Test1模板调用Test2是没有意义的。您调用它为{{test2}}(无参数)。
如果你想要页面全局变量,我建议使用Mediawiki变量插件。http://www.mediawiki.org/wiki/Extension:变量
此外,使用竖条"默认"模板参数是很好的做法,例如{{{par1|}}}或{{{par2|None}}}。否则,如果没有给出参数,得到的wikittext将是带大括号的参数名。例如:如果没有给出参数,{{{par1|}}}返回一个空字符串,但是如果没有参数,{{par1}}实际上会产生"{{par1}}}"作为字符串,这可能是没有用的。
回到我使用变量的例子,我已经调整了你的例子(par1是进入test1模板的参数,par2是进入test2模板的参数):
模板test1变为:
{{{par1|}}}<br/>
{{#vardefine: par2|{{{par2|}}} }}
{{test2}}
模板test2变为:
{{#var:par2}}<br/>