2

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

假设您有两个模板{{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}}}但是当模板变得更加复杂时,它可能真的很有帮助。任何提示都非常感谢。

4

3 回答 3

2

您要描述的是参数转发。不,仅使用 mediawiki 模板是不可能的。

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

于 2013-03-01T18:52:26.893 回答
1

您可以使用

{{test2|{{{arg1}}}={{{par1}}}|{{{arg2}}}={{{par2}}}}}

in test1,并将其称为

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

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

于 2013-03-02T11:30:15.220 回答
0

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

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

此外,最好使用竖线“默认”模板参数,例如 {{{par1|}}} 或 {{{par2|None}}}。否则,如果未给出参数,则生成的 wikitext 将是带有大括号的参数名称。例如:{{{par1|}}} 如果未给出该参数,则返回一个空白字符串,但如果该参数不存在,{{{par1}}} 实际上会生成“{{{par1}}}”作为字符串,这可能没有用。

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

模板 test1 变为:

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

模板 test2 变为:

{{#var:par2}}<br/>
于 2015-02-13T21:26:11.280 回答