神奇宝贝百科:建立模板
在创建模板之前,请思考:
- 神奇宝贝百科上是否没有类似的模板?
- 神奇宝贝百科已有大量模板供编辑者使用。如果现有模板可以满足编辑需要,请不要建立重复的模板。
- 这个模板是否真的需要创建?
- 模板是为了满足重复调用相同代码而创建的。如果没有需要重复调用的代码,请不要建立模板而是直接将代码写入相应页面。
- 这个模板是否与现有模板匹配?
- 为保证百科样式的统一性,请您在建立模板时参考已有模板的配色、版式等。
如果以上问题的答案均为“是”,那么您可以参考此页面创建您需要的模板。
读取参数
一般情况下,一个模板需要一些参数以便在不同环境调用时显示不同的内容。在模板页面中,用三个大括号可以读取参数,例如:{{{参数1|参数1的默认值}}}
可以读取参数1
,如果在模板调用中参数1
没有赋值,则使用参数1的默认值作为参数1
的赋值。
含有命名参数的模板
命名参数的模板中,使用参数名=参数值
的方式来赋予参数。假设某模板{{你的名字}}
的内容为:
你的名字是:{{{姓|你的姓}}}·{{{名|你的名}}}
其中的“你的姓”和“你的名”是默认参数。在调用模板时,若未为模板赋参数,则调用默认参数。即{{你的名字}}
会显示为:
你的名字是:你的姓·你的名
赋参数则可以写:{{你的名字|姓=宫本|名=茂}}
,会显示为:
你的名字是:宫本·茂
注意:赋空值与未赋值不同。例如,使用{{你的名字|姓=}}
视为参数姓
赋空值,而参数名
未赋值。显示为:
你的名字是:·你的名
注意:神奇宝贝百科中参数名区分简繁,即参数宝可梦
和寶可夢
会被视为不同的参数。为避免不必要的麻烦,请尽量使用英文作为参数名。
含有编号参数的模板
编号参数的模板中,使用参数的位置(索引)来赋予参数。假设某模板{{数字}}
的内容为:
你喜欢的数字是:{{{1|888}}}和{{{2|999}}}
在调用模板时,可以写:{{数字|1|2}}
,显示为:
你喜欢的数字是:1和2
命名参数与编号参数的利弊
两种调用参数的方式各有利弊。
- 命名参数的优点:
- 参数的顺序可以变化,模板的参数可以任意添加和修改,而不会对调用模板的页面产生致命影响。
- 参数的意义容易理解。
- 当模板具有大量缺省参数时,命名参数使语法更为清晰。
- 一些特殊的技巧利用这样一个特性:在一次模板调用中允许对同一个参数多次赋值,这导致最后一次赋值的内容生效;这种做法隐式保证了在本次模板调用中该参数至少被赋值一次。
- 编号参数的优点:
- 调用模板时参数名和等号可以省略,从而节约打字时间和存储空间。
- 不会因参数名区分简繁而产生不必要的麻烦。
一般情况下,链接模板、显示模板、代码模板、列表类模板习惯使用编号参数,信息框模板、模板的可选参数习惯使用命名参数。
另外,使用命名参数会忽略参数值开始和结尾的换行符,而使用编号参数则会保留。假设某模板{{表格}}
的内容为:
{| class="bgl-{{{bg|未知}}} bd-{{{b|未知}}} roundy" ! 这是表格文本{{{1|}}} |}
在调用模板时,若写为:
{{表格 |bg= 太阳 |b=月亮 | ! }}
代码等价于(即使用subst:
参数替换后得到的代码):
{| class="bgl-太阳 bd-月亮 roundy" ! 这是表格文本 ! |}
实际显示为:
这是表格文本
! |
---|
参数的默认值和嵌套
假设某模板{{模板A}}
的内容为:
{{{a1}}},{{{a2|火属性}}}{{{a3|}}},{{{a5|{{MSP|{{{a4|006}}}}}}}}
其中:
- a1参数没有默认值,若模板中没有赋予a1参数的值,就会显示为{{{a1}}}。即:没有默认值的参数,其默认值就是参数代码本身。(如例1)
- a2参数的默认值为“火属性”,若模板中没有赋予a2参数的值,就会显示“火属性”(如例2),否则显示赋予的参数值(如例1和例3)。
- a3参数的默认值为空值,若模板中没有赋予a3参数的值,则a3参数的位置会什么都不显示(如例1),否则显示赋予的参数值(如例2和例3)。
- a4参数和a5参数形成了一个参数嵌套:a4参数是模板{{MSP}}的参数,且整体为a5参数的默认值。此时的逻辑:
- 若模板中赋予了a5参数的值,则a5参数会完全覆盖a4参数。(如例2)
- 若模板中没有赋予a5参数的值,则默认使用
{{MSP|{{{a4|006}}}}}
,此时要赋予a4参数。(如例3)
例子如下:
- 例1:
{{模板A|a2=}}
(赋予了a2的值,但为空值)会显示为:
{{{a1}}},,
- 例2:
{{模板A|a1=超级喷火龙X|a3=和龙属性宝可梦|a4=007|a5={{MSP|006MX}}}}
会显示为:
超级喷火龙X,火属性和龙属性宝可梦,
- 例3:
{{模板A|a1=藤藤蛇|a2=草属性|a3=宝可梦|a4=495}}
会显示为:
藤藤蛇,草属性宝可梦,
一般来说,必填参数可以没有默认值,这样可以让模板使用者了解模板是否使用正确;可选参数则必须要有默认值(可以为空值,也可以是别的值)。若参数还作为解析器函数的参数,则需要考虑参数在解析器函数中的作用来确定是否有默认值。若参数在模板的多个地方使用,则每处都可以指定一个不同的默认值。
为参数添加判断函数
- 主頁面:Help:解析器函数
可以通过解析器函数为参数添加判断参数。假设某模板{{模板B}}
的内容为:
{{#switch:{{{1}}}|水跃鱼 = Mudkip|妙蛙种子 = Bulbasaur|=none|}}
在调用模板时,{{模板B|水跃鱼}}、{{模板B|妙蛙种子}}、{{模板B|}}、{{模板B}}
会显示为:
Mudkip、Bulbasaur、none、
使用<noinclude>
、<includeonly>
标签标记可调用内容
在创建模板时,大部分内容应该可以同时被模板页面和嵌入页面同时调用;但也有例外,例如模板分类、模板文档等应该仅在模板页面显示。对于这种情况可以使用<noinclude>
、<includeonly>
标签标记可调用内容,使用方法如下:
<noinlude>这个标签内的内容只被模板页面调用</noinclude> <includeonly>这个标签内的内容只被嵌入页面调用</includeonly>
注意:在使用这两个标签时请注意换行符的位置。如果一个模板的最后有换行符而没有其他标签,那么这个换行符会被忽略。但是,如果换行符后有<noinclude>
、<includeonly>
标签,则这个换行符可能会被嵌入页面调用而使页面显示混乱。
假设某模板{{新表格}}
的内容为:
|- | {{{1}}} | {{{2}}} <noinclude>[[Category:模板]]</noinclude>
在嵌入页面写入:
{| class="wikitable" {{新表格|1|2}} {{新表格|3|4}} |}
代码等价于(即使用subst:
参数替换后得到的代码):
{| class="wikitable" |- | 1 | 2 |- | 3 | 4 |}
显示为:
1 | 2
|
3 | 4
|
显然这样做会使嵌入页面插入不需要的空行。为避免这种情况发生,请将换行符放在<noinclude>
标签内。
为模板添加分类
为方便管理模板页面和方便其它用户查找已有模板,每个模板都应有至少一个分类。添加分类的方法是在模板底部加入<noinclude>[[Category:**模板]]</noinclude>
。
对于已有模板分类,请参考Category:模板。
为模板添加模板文档
为方便其他用户使用您创建的模板,请最好在创建模板后同时创建一个名为Template:模板名/doc
的模板文档,并在模板底部加入<noinclude>{{模板文档}}</noinclude>
。如果同类模板可以使用相同的模板文档,也可以单独创建模板文档,并在模板底部加入<noinclude>{{模板文档|模板文档的页面名}}</noinclude>
。