2015-08-22 69 views
1

我正在爲小遊戲設置維基,並面臨有關模板的問題。具有可變數量參數的模板

組織維基:

這個遊戲有地區,這是由幾個層次。我的維基每個地區都有一個頁面,這個頁面包含每個關卡的縮圖,鏈接到關卡的頁面。

現在,我有這樣的事情對我的水平模板:

|- 
| [[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}} 
|} 

區域和region_images將是相同的如果這個wiki支持文件名中的非UTF-8字符,但不幸的是它沒有。

主要問題:

所以,你可以看到,區域和region_images重複無處不在,所以我想我可以做一個模板來照顧它。

我在想東西,我可以用這樣的:

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

,將產生在我前面的例子一樣級別的模板。但我對模板非常陌生,我不確定它是否可行。看來我需要一個在我的區域模板中可變長度的參數列表,但我找不到那樣的東西。如果它不存在,我該怎麼做?

補充問題:

其實,我簡化了一下情況,但在這場比賽中的水平可以鏈接到其他級別,所以我想表明它太在該地區的頁面。級別模板具有可選參數「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」參數。

在此先感謝您的幫助,如果有什麼不夠清楚的地方,請隨時提出任何問題!

回答

1

您可以安裝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|}}} }} }} 
|} 
+0

我明白了。但在這種情況下,我必須在Region模板中硬編碼所有可能的關卡號碼,是嗎?即使如此,這似乎是一個很好的解決方案,謝謝! – maxdefolsch

+0

是的,MediaWiki核心不支持循環播放參數。如果你想要這樣的東西,你可以使用[Scribunto](https://www.mediawiki.org/wiki/Extension:Scribunto)擴展名。 – Tgr