参数数量可变的模板

Template with variable number of parameters

我正在为一款小游戏设置 wiki,但我遇到了有关模板的问题。

维基组织:

这个游戏有区域,由几个级别组成。我的 wiki 每个地区都有一个页面,这个页面包含每个级别的缩影,link 到该级别的页面。

现在,我的关卡模板有这样的东西:

|-
| [[Image:{{{region_images}}} {{{level}}}.png|200px|link={{{region}}}/{{{level}}}]]

这就是它在区域页面中的用法:

{| style="text-align: center;"
{{Level|region=My Region Name|region_images=My Region Filename|level=0}}
{{Level|region=My Region Name|region_images=My Region Filename|level=1}}
{{Level|region=My Region Name|region_images=My Region Filename|level=2}}
{{Level|region=My Region Name|region_images=My Region Filename|level=3}}
{{Level|region=My Region Name|region_images=My Region Filename|level=4}}
{{Level|region=My Region Name|region_images=My Region Filename|level=5}}
{{Level|region=My Region Name|region_images=My Region Filename|level=6}}
|}
如果此 wiki 支持文件名中的非 UTF-8 字符,

region 和 region_images 将是同一回事,但不幸的是它不支持。

主要问题:

因此,如您所见,region 和 region_images 到处都是重复的,所以我想我可以制作一个模板来处理它。

我在想我可以像这样使用的东西:

{{Region|name=My Region Name|region_images=My Region Filename
|0
|1
|2
|3
|4
|5
|6}}

这将像我之前的示例一样生成关卡模板。但我对模板还很陌生,我不确定它是否可行。看来我的区域模板中需要一个可变长度的参数列表,但我找不到类似的东西。如果不存在,我应该怎么做?

补充问题:

其实我把情况简化了一点,但是在这个游戏中关卡可以link到其他关卡,所以我也想在地区页面上注明。 Level 模板有可选参数 "prev" 和 "next"。如果使用它们,则模板会在关卡的缩略图旁边添加注释。

如果可能(如果我的主要问题已解决),我想保留这些可选参数并能够执行类似的操作:

{{Region|name=My Region Name|region_images=My Region Filename
|0
|1 |prev=Another region
|2 |next=Yet another region
|3
|4 |prev=Another region |next=Yet another region
|5
|6}}

显然,当我为每个级别设置一个级别模板时,这很容易做到,但是使用这个区域模板,我不能有超过一个 "prev" 或 "next" 参数,如果我理解正确。

在此先感谢您的帮助,如果有什么地方不够清楚,请随时提出任何问题!

您可以安装 ParserFunctions 并执行如下操作:

{{Region|name=My Region Name|region_images=My Region Filename
|0
|1 |prev1=Another region
|2 |next2=Yet another region
|3
|4 |prev4=Another region |next4=Yet another region
|5
|6}}

并将其放入区域模板中:

{| style="text-align: center;"
{{#if:{{{0|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=0|prev={{{prev0|}}}|next={{{next0|}}} }} }}
{{#if:{{{1|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=1|prev={{{prev1|}}}|next={{{next1|}}} }} }}
{{#if:{{{2|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=2|prev={{{prev2|}}}|next={{{next2|}}} }} }}
{{#if:{{{3|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=3|prev={{{prev3|}}}|next={{{next3|}}} }} }}
{{#if:{{{4|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=4|prev={{{prev4|}}}|next={{{next4|}}} }} }}
{{#if:{{{5|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=5|prev={{{prev5|}}}|next={{{next5|}}} }} }}
{{#if:{{{6|}}}|{{Level|region={{{name}}}|region_images={{{region_images}}}|level=6|prev={{{prev6|}}}|next={{{next6|}}} }} }}
|}