【问题标题】:MediaWiki templates inherit parameters.MediaWiki 模板继承参数。
【发布时间】:2013-03-01 18:45:29
【问题描述】:

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

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


    【解决方案1】:

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

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

    【讨论】:

    • 达尼特。感谢您的回答和其他信息!
    【解决方案2】:

    你可以使用

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

    test1,并将其称为

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      模板 test1 变为:

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

      模板 test2 变为:

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

      【讨论】:

        猜你喜欢
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-11
        相关资源
        最近更新 更多