MediaWiki模板继承参数



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

假设您有两个模板{{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/>

相关内容

  • 没有找到相关文章

最新更新