MediaWiki模板继承参数。

时间:2013-03-01 18:45:30

标签: mediawiki mediawiki-templates

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

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

模板:测试1:

{{{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}}}并不是一个问题,但是当模板变得更复杂时,它可能真的很有用。任何提示都非常感谢。

3 个答案:

答案 0 :(得分:2)

您要描述的是参数转发。不,仅凭mediawiki模板无法做到这一点。

正在开发的新Lua引擎(可用于测试扩展:Lua,最终旨在成为核心的一部分)似乎使这成为可能。

答案 1 :(得分:1)

您可以使用

{{test2|{{{arg1}}}={{{par1}}}|{{{arg2}}}={{{par2}}}}}
<{1>}中的

,并将其命名为

test1

但是你可以通过等待Lua来节省相当多的理智。 (它已经部署在一些较小的维基百科上,将在3月部署,所以这不是漫长的等待。)

答案 2 :(得分:0)

首先,你的Test1模板在没有参数的情况下调用Test2是没有意义的。您将其作为{{test2}}(无参数)调用。

如果你想要页面全局变量,我建议使用Mediawiki Variables插件。 http://www.mediawiki.org/wiki/Extension:Variables

此外,优良作法是&#34;默认&#34;带垂直条的模板参数,例如{{{par1 |}}}或{{{par2 | None}}}。否则,如果未给出参数,则生成的wikitext将是带括号的参数名称。例如:{{{par1 |}}}如果没有给出该参数,则返回一个空白字符串,但{{{par1}}}实际产生&#34; {{{par1}}}&#34;作为字符串,如果参数不存在,这可能没有用。

回到我使用变量的例子,我已经调整了你的例子(par1是进入test1模板的参数,par2是进入test2模板的参数):

模板test1变为:

{{{par1|}}}<br/>
{{#vardefine: par2|{{{par2|}}} }}
{{test2}}

模板test2变为:

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