神奇宝贝百科:建立模板

来自神奇宝贝百科

在创建模板之前,请思考:

  • 神奇宝贝百科上是否没有类似的模板?
    • 神奇宝贝百科已有大量模板供编辑者使用。如果现有模板可以满足编辑需要,请不要建立重复的模板。
  • 这个模板是否真的需要创建?
    • 模板是为了满足重复调用相同代码而创建的。如果没有需要重复调用的代码,请不要建立模板而是直接将代码写入相应页面。
  • 这个模板是否与现有模板匹配?
    • 为保证百科样式的统一性,请您在建立模板时参考已有模板的配色、版式等。

如果以上问题的答案均为“是”,那么您可以参考此页面创建您需要的模板。

读取参数

一般情况下,一个模板需要一些参数以便在不同环境调用时显示不同的内容。在模板页面中,用三个大括号可以读取参数,例如:{{{参数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>

参考资料

参见