将 MediaWiki 模板中的参数传递给包含的模板

Hand over parameters from a MediaWiki template to a included one

我正在使用 MediaWiki 扩展 DynamicPageList(第三方),它可以用作模板:

{{#dpl:
|category=foo
|notcategory=bar
}}

我尝试在我的其中一个使用更多参数的模板中使用此模板,例如:

{{myTemplate
|category=foo
|notcategory=bar
|mypara1=bla
|mypara2=lala
}}

myTemplate 看起来像这样:

do something with mypara1
...
do something with mypara2
...
{{#dpl:
|category=foo
|notcategory=bar
}}

我知道我的参数,但是 #dpl: 可以使用一个或多个参数。

如何将我的参数与 #dpl: 的参数分开?我怎么能只交出属于#dpl:?

的参数

谢谢,

也许我误解了你的问题,但你可以将参数传递给 DPL,就像传递给模板或另一个 parser function 一样。在大多数情况下,您可能希望添加一个空的默认值:

我的模板:

do something with {{{mypara1}}}
do something with {{{mypara2}}}

{{#dpl:
  |category    = {{{category|}}}    <!-- default to empty string -->
  |notcategory = {{{notcategory|}}} <!-- default to empty string -->
}}

这样称呼:

{{myTemplate
  |category=foo
  |notcategory=bar
  |mypara1=bla
  |mypara2=lala
}}

也将使用缺少的参数:

{{myTemplate
  |category=foo
  |mypara1=bla
  |mypara2=lala
}}

最后我想出了以下解决方案:

DPL 有一个额外的模板 #dplreplace。我正在使用它来解析我的参数。

调用模板:

{{myTemplate
  | filter=category:foo;notcategory:bar
  | mypara1=bla
  | mypara2=lala
}}

在模板中,我将 : 替换为 =,将 ; 替换为 {{!}}

{{#dpl:
  | {{#dplreplace: {{#dplreplace: {{{filter}}} | /:/ | = }} | /;/ | {{!}} }}
  | ordermethod = sortkey
  | suppresserrors = true
}}

注意:{{!}} 是一个模板,已被 | 取代。

此致;