帮助:模板

来自中文百科,文化平台
跳转至: 导航搜索

-{模板}-(Template,又譯作「樣-{}-板」、「範本」)在MediaWiki中是一个可以加入其他页面的页面,就好像计算机语言中的子程序

创建模板时,最好解释模板的作用和相关参数,给出例子,调用模板的形式以及结果。


调用模板

调用模板就是把模板内容嵌入到调用方页面。

在Template命名空间里的页面才是模板,所以模板都由Template:开头。调用时必须使用模板标签,即{{Template:模板名}}的形式,“Template:”可以在无歧义的情况下省略。如Template:tc是一个模板,内容为“in”。如果把{{[[{{#switch:

|#default = Tc 
| = 
   {{#ifeq:  | 
     | Template:tc            
     | Tc      
   }}

}}|tc]]{{#if:| | {{{arg}}}}}}}加入某个页面,则{{[[{{#switch:

|#default = Tc 
| = 
   {{#ifeq:  | 
     | Template:tc            
     | Tc      
   }}

}}|tc]]{{#if:| | {{{arg}}}}}}}的内容会在此頁面显示,即模板:Tc

如果“Template:模板名”不存在,{{模板名}}的作用就与[[Template:模板名]]相同,提供一个连接到不存在页面的链接:模板:模板名

模板可以被重定向Template:请求来源被重定向到Template:Fact,所以{{请求来源}}效果等同于{{fact}}。有时移动模板并建立重定向后,原调用重定向的页面可能会出错,只要过一段时间(几小时)等服务器刷新缓存即可。

设定参数

在模板名后可用管道符追加参数。参数有编号参数和命名参数两种。在模板的说明文档里一般会列出该模板的所有参数。

例如,{{fact|1=维基百科的编者大部分是男性|time=2024-05-08}}得到「模板:Fact」。

“维基百科的编者大部分是男性”的参数名为1。“2024-05-08”的参数名为time。参数名为数字就是编号参数,否则就是命名参数

编号参数的参数名(1、2、3、4等)和等号可以省略。上例的效果和{{fact|维基百科的编者大部分是男性|time=2024-05-08}}是一样的。注意,以省略形式赋值的第一个编号参数的参数名是1,而不是很多编程语言习惯的0。

调用 效果
{{catnav|页面分类|地理|大洲|亚洲|亚洲国家}} {{#ifeq: 帮助
{{#ifeq:地理|...|...|页面分类}}{{
  1. if: 地理| > {{#ifeq:地理|...|...|{{#ifexist: Category:地理|地理|地理}}}}}}{{
  2. if: 大洲| > {{#ifeq:大洲|...|...|{{#ifexist: Category:大洲|大洲|大洲}}}}}}{{
  3. if: 亚洲| > {{#ifeq:亚洲|...|...|{{#ifexist: Category:亚洲|亚洲|亚洲}}}}}}{{
  4. if: 亚洲国家| > {{#ifeq:亚洲国家|...|...|{{#ifexist: Category:亚洲国家|亚洲国家|亚洲国家}}}}}}{{
  5. if: | > {{#ifeq:{{{6}}}|...|...|{{#ifexist: Category:{{{6}}}|[[:Category:{{{6}}}|{{{6}}}]]|{{{6}}}}}}}}}{{
  6. if: | > {{#ifeq:{{{7}}}|...|...|{{#ifexist: Category:{{{7}}}|[[:Category:{{{7}}}|{{{7}}}]]|{{{7}}}}}}}}}{{
  7. if: | > {{#ifeq:{{{8}}}|...|...|{{#ifexist: Category:{{{8}}}|[[:Category:{{{8}}}|{{{8}}}]]|{{{8}}}}}}}}}{{
  8. if: | > {{#ifeq:{{{9}}}|...|...|{{#ifexist: Category:{{{9}}}|[[:Category:{{{9}}}|{{{9}}}]]|{{{9}}}}}}}}} > 模板
}}
{{catnav|0=页面分类|1=地理|2=大洲|3=亚洲|4=亚洲国家}} {{#ifeq: 帮助
{{#ifeq:大洲|...|...|地理}}{{
  1. if: 大洲| > {{#ifeq:大洲|...|...|{{#ifexist: Category:大洲|大洲|大洲}}}}}}{{
  2. if: 亚洲| > {{#ifeq:亚洲|...|...|{{#ifexist: Category:亚洲|亚洲|亚洲}}}}}}{{
  3. if: 亚洲国家| > {{#ifeq:亚洲国家|...|...|{{#ifexist: Category:亚洲国家|亚洲国家|亚洲国家}}}}}}{{
  4. if: | > {{#ifeq:{{{5}}}|...|...|{{#ifexist: Category:{{{5}}}|[[:Category:{{{5}}}|{{{5}}}]]|{{{5}}}}}}}}}{{
  5. if: | > {{#ifeq:{{{6}}}|...|...|{{#ifexist: Category:{{{6}}}|[[:Category:{{{6}}}|{{{6}}}]]|{{{6}}}}}}}}}{{
  6. if: | > {{#ifeq:{{{7}}}|...|...|{{#ifexist: Category:{{{7}}}|[[:Category:{{{7}}}|{{{7}}}]]|{{{7}}}}}}}}}{{
  7. if: | > {{#ifeq:{{{8}}}|...|...|{{#ifexist: Category:{{{8}}}|[[:Category:{{{8}}}|{{{8}}}]]|{{{8}}}}}}}}}{{
  8. if: | > {{#ifeq:{{{9}}}|...|...|{{#ifexist: Category:{{{9}}}|[[:Category:{{{9}}}|{{{9}}}]]|{{{9}}}}}}}}} > 模板
}}
{{catnav|1=页面分类|2=地理|3=大洲|4=亚洲|5=亚洲国家}} {{#ifeq: 帮助
{{#ifeq:地理|...|...|页面分类}}{{
  1. if: 地理| > {{#ifeq:地理|...|...|{{#ifexist: Category:地理|地理|地理}}}}}}{{
  2. if: 大洲| > {{#ifeq:大洲|...|...|{{#ifexist: Category:大洲|大洲|大洲}}}}}}{{
  3. if: 亚洲| > {{#ifeq:亚洲|...|...|{{#ifexist: Category:亚洲|亚洲|亚洲}}}}}}{{
  4. if: 亚洲国家| > {{#ifeq:亚洲国家|...|...|{{#ifexist: Category:亚洲国家|亚洲国家|亚洲国家}}}}}}{{
  5. if: | > {{#ifeq:{{{6}}}|...|...|{{#ifexist: Category:{{{6}}}|[[:Category:{{{6}}}|{{{6}}}]]|{{{6}}}}}}}}}{{
  6. if: | > {{#ifeq:{{{7}}}|...|...|{{#ifexist: Category:{{{7}}}|[[:Category:{{{7}}}|{{{7}}}]]|{{{7}}}}}}}}}{{
  7. if: | > {{#ifeq:{{{8}}}|...|...|{{#ifexist: Category:{{{8}}}|[[:Category:{{{8}}}|{{{8}}}]]|{{{8}}}}}}}}}{{
  8. if: | > {{#ifeq:{{{9}}}|...|...|{{#ifexist: Category:{{{9}}}|[[:Category:{{{9}}}|{{{9}}}]]|{{{9}}}}}}}}} > 模板
}}
{{catnav|5=亚洲国家|4=亚洲|3=大洲|2=地理|1=页面分类}} {{#ifeq: 帮助
{{#ifeq:地理|...|...|页面分类}}{{
  1. if: 地理| > {{#ifeq:地理|...|...|{{#ifexist: Category:地理|地理|地理}}}}}}{{
  2. if: 大洲| > {{#ifeq:大洲|...|...|{{#ifexist: Category:大洲|大洲|大洲}}}}}}{{
  3. if: 亚洲| > {{#ifeq:亚洲|...|...|{{#ifexist: Category:亚洲|亚洲|亚洲}}}}}}{{
  4. if: 亚洲国家| > {{#ifeq:亚洲国家|...|...|{{#ifexist: Category:亚洲国家|亚洲国家|亚洲国家}}}}}}{{
  5. if: | > {{#ifeq:{{{6}}}|...|...|{{#ifexist: Category:{{{6}}}|[[:Category:{{{6}}}|{{{6}}}]]|{{{6}}}}}}}}}{{
  6. if: | > {{#ifeq:{{{7}}}|...|...|{{#ifexist: Category:{{{7}}}|[[:Category:{{{7}}}|{{{7}}}]]|{{{7}}}}}}}}}{{
  7. if: | > {{#ifeq:{{{8}}}|...|...|{{#ifexist: Category:{{{8}}}|[[:Category:{{{8}}}|{{{8}}}]]|{{{8}}}}}}}}}{{
  8. if: | > {{#ifeq:{{{9}}}|...|...|{{#ifexist: Category:{{{9}}}|[[:Category:{{{9}}}|{{{9}}}]]|{{{9}}}}}}}}} > 模板
}}
{{catnav|1=页面分类|2=地理|大洲|4=亚洲|亚洲国家}}
要么全不省略编号参数参数名,要么全都省略,否则极易出错
{{#ifeq: 帮助
{{#ifeq:亚洲国家|...|...|大洲}}{{
  1. if: 亚洲国家| > {{#ifeq:亚洲国家|...|...|{{#ifexist: Category:亚洲国家|亚洲国家|亚洲国家}}}}}}{{
  2. if: | > {{#ifeq:{{{3}}}|...|...|{{#ifexist: Category:{{{3}}}|[[:Category:{{{3}}}|{{{3}}}]]|{{{3}}}}}}}}}{{
  3. if: 亚洲| > {{#ifeq:亚洲|...|...|{{#ifexist: Category:亚洲|亚洲|亚洲}}}}}}{{
  4. if: | > {{#ifeq:{{{5}}}|...|...|{{#ifexist: Category:{{{5}}}|[[:Category:{{{5}}}|{{{5}}}]]|{{{5}}}}}}}}}{{
  5. if: | > {{#ifeq:{{{6}}}|...|...|{{#ifexist: Category:{{{6}}}|[[:Category:{{{6}}}|{{{6}}}]]|{{{6}}}}}}}}}{{
  6. if: | > {{#ifeq:{{{7}}}|...|...|{{#ifexist: Category:{{{7}}}|[[:Category:{{{7}}}|{{{7}}}]]|{{{7}}}}}}}}}{{
  7. if: | > {{#ifeq:{{{8}}}|...|...|{{#ifexist: Category:{{{8}}}|[[:Category:{{{8}}}|{{{8}}}]]|{{{8}}}}}}}}}{{
  8. if: | > {{#ifeq:{{{9}}}|...|...|{{#ifexist: Category:{{{9}}}|[[:Category:{{{9}}}|{{{9}}}]]|{{{9}}}}}}}}} > 模板
}}

需要转义的参数

  • 如果参数值中含有等号(=),调用模板时则必须使用参数名,即使参数名只是一个编号也要使用。
  • 如果参数值中含有两个连续的右大括号(}}),调用参数时必须将其放入nowiki标记中,例如<nowiki>}}</nowiki>
  • 如果参数值中含有竖线(|),调用参数时必须将其放入nowiki标记中,例如<nowiki>|</nowiki>,或用{{[[{{#switch:
|#default = ! 
| = 
   {{#ifeq:  | 
     | Template:!            
     | !      
   }}

}}|!]]{{#if:| | {{{arg}}}}}}}代替。

  • 参数值中可以包含一对双方括号,用于链接一个条目,或是其他名字空间的页面,但不能含有半个右双方括号,然后再接半个左双方括号。例如Template:数数1中的内容是:
[[一二{{{1}}}六七]]
调用{{[[{{#switch:
|#default = 数数1 
| = 
   {{#ifeq:  | 
     | Template:数数1            
     | 数数1      
   }}

}}|数数1]]{{#if:三]]四[[五| | 三]]四[[五}}}}的结果是:

{{数数1|三]]四[[五}}

替换引用

模板:Main 另见分类:应被替换引用的模板

放置修饰符“subst:”(substitute,替代)位于模板标签的“{{”之后,模板名之前,即可替换引用。它能在调用方页面保存时,将所调模板展开,而不是每次显示页面的时候读取有关模板。这样可以按模板当前的形式编辑条目,并使条目免受模板变化的影响,并减轻服务器负担。所以对模板的替换引用不会显示在页面历史和模板的链入页面中。

如{{[[{{#switch:

|#default = Fact/auto 
| = 
   {{#ifeq:  | 
     | Template:fact/auto            
     | Fact/auto      
   }}

}}|fact/auto]]{{#if:| | {{{arg}}}}}}}和{{[[{{#switch:

|#default = 未签名 
| = 
   {{#ifeq:  | 
     | Template:未签名            
     | 未签名      
   }}

}}|未签名]]{{#if:| | {{{arg}}}}}}}都是应被替换引用的模板。

嵌入页面

模板标签不仅可以调用模板,也可以调用(嵌入)其他页面,就是像模板一样把被调页面的内容加入到调用方页面。

  • {{Help:模板入门}}会将Help:模板入门中的内容加入到该页来。
  • 如果调用主命名空间的条目,为了避免和调用模板产生歧义,需要在条目名前加冒号。如{{:福寿岭站}}会将福寿岭站中的内容加入到该页来,而不是调用{{福寿岭站}}(模板:福寿岭站)。


这样一来,所有页面都可以当作是模板。但是,使用在模板名字空间的页面(即真正的模板)有以下独特的好处:

  • 所有被页面使用的模板都在页面编辑页显示出来。
  • 当模板改变时,所有使用模板页面的服务器缓存(相对于浏览器缓存)自动被清空;而位于其他名字空间的页面,服务器缓存往往要手工清空。

而模板名字空间以外的页面一般在如下情况下作为模板使用:

  • 引用维基百科名字空间的界面消息。
  • 将一個长页面(可以屬于主条目名字空间,假設名字就叫做“长页面”,例子)拆分为较短页面时,可以将短页面命名为“长页面/第一部分”、“长页面/第二部分”等,然后使用{{/第一部分}}<br/>{{/第二部分}}来拼成长页面。Wikipedia:模板消息/全部就是一个好例子。

一个模板可以调用另一个模板,它也可以调用它自己,但自我调用只有一层有效。例如:Template:模板1的内容是“一次,{{模板1}}”,在Template:模板1中将显示:“一次,一次,{{模板1}}”,如果其他条目调用该模板,所加入的文字将是
模板:模板1

在2010年前,如果把其他模板重定向至某模板,该模板又引用重定向,且多次自我调用均为不同重定向,则该模板可以实现多次自我调用。MediaWiki后来取消此功能。如{{[[{{#switch:

|#default = RR 
| = 
   {{#ifeq:  | 
     | Template:RR            
     | RR      
   }}

}}|RR]]{{#if:7| | 7}}}}的结果为模板:RR

模板中变量在模板被加入某页面后才被赋值,而不是之前。因此,如果一个模板中含有{{PAGENAME}},该模板被某页面调用,相应的位置显示的将是调用页面的名称,而不是被调用模板的名称。

一个页面所调用的所有模板都在该页编辑页面中列出,并提供相应的链接,而且:

  • 一个段落的编辑页面不会列出任何模板;
  • 编辑旧版本的页面,这个列表仍然是当前最新的;
  • 可加入模板擴展語法#if, #ifeq, #ifexist, #ifexpr, 或 #switch;
  • 如果不真正提交编辑,仅仅在预览中使用的模板不被列出。
  • 如果模板名里面嵌套另一个模板,如{{{{tc}}{{CURRENTDAY}}}},则会得到{{模板:Tc8}};编辑页面里会显示[[Template:模板:Tc8]]。
  • 模板名#后的内容会忽略。

请注意,如果页面结尾没有换行,编辑页面中总是在结尾添加一个换行,但这并不影响模板的某些效果,即这个换行不真正起作用。例如:

{{编号演示}}{{编号演示}}
{{编号演示}}

的结果是: 模板:编号演示模板:编号演示 模板:编号演示

创建并编辑模板

模板页面会自动调用这个模板本身,实际上相当于一次没有参数赋值的模板调用,因此如果参数有默认值,将被显示。例如:模板Template:数一数的内容是

一二三{{{1|四五六}}}七八九

模板页面的内容是

模板:数一数

模板的命名

如上文所说,模板必须存在于Template命名空间中。模板名称建议是中文,英文也可接受,但不要是缩写,因为在模板分类中难以“望名生义”。你倒是可以建立数个缩写重定向,方便用户调用模板。

读取参数

在模板页面中,用三个大括号可以读取参数,例如:{{{参数1|参数1的默认值}}}可以读取参数1,如果在模板调用中参数1没有赋值,则使用参数1的默认值作为参数1的赋值。另见Help:默认参数

注意:参数默认值和参数赋空值是不同的。

例1:含有命名参数的模板

我们可以创建一个名为Template:姓名的模板,内容为:

我是{{{姓}}}{{{名}}}。

如果用{{[[{{#switch:

|#default = 姓名 
| = 
   {{#ifeq:  | 
     | Template:姓名            
     | 姓名      
   }}

}}|姓名]]{{#if:| | {{{arg}}}}}}}调用这个模板,我们会得到:

模板:姓名

如果用{{[[{{#switch:

|#default = 姓名 
| = 
   {{#ifeq:  | 
     | Template:姓名            
     | 姓名      
   }}

}}|姓名]]{{#if:姓=张|名=飞| | 姓=张|名=飞}}}},我们则得到:

模板:姓名

例2:含有编号参数的模板

再来一个例子,说明一个编号参数的定义和调用:我们还是先要定义一个带参数的模板,例如模板Template:数数的内容是

一二三{{{1|四五六}}}七八九

赋值调用{{[[{{#switch:

|#default = 数数 
| = 
   {{#ifeq:  | 
     | Template:数数            
     | 数数      
   }}

}}|数数]]{{#if:六五四| | 六五四}}}}的结果是:

模板:数数

赋空值调用{{[[{{#switch:

|#default = 数数 
| = 
   {{#ifeq:  | 
     | Template:数数            
     | 数数      
   }}

}}|数数]]{{#if:| | }}}}的结果是:

模板:数数

未赋值调用,就会调用默认值,{{[[{{#switch:

|#default = 数数 
| = 
   {{#ifeq:  | 
     | Template:数数            
     | 数数      
   }}

}}|数数]]{{#if:| | {{{arg}}}}}}}的结果是:

模板:数数

编号参数还是命名参数?

编号参数的优点

  1. 调用模板时参数名和等号可以省略,从而节约打字时间和存储空间。参见#设定参数
  2. 阿拉伯数字是世界性的,在翻译的时候省事,也可以被不懂中文的人理解。

命名参数的优点

  • 参数的顺序可以变化,模板的参数可以任意添加和修改,而不会对调用模板的页面产生致命影响。
  • 参数的意义容易理解。
  • 当模板具有大量缺省参数时,命名参数使语法更为清晰
  • 一些特殊的技巧利用这样一个特性:在一次模板调用中允许对同一个参数多次赋值,这导致最后一次赋值的内容生效;这种做法隐式保证了在本次模板调用中该参数至少被赋值一次

未赋值且没有默认值的参数

例如:模板Template:再数数的内容是

一-{{{1}}}-三-{{{2}}}-五

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:|| | |}}}}的结果是

模板:再数数

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:二|| | 二|}}}}的结果是

模板:再数数

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:|二| | |二}}}}的结果是

模板:再数数

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:二|{{{1}}}| | 二|{{{1}}}}}}}的结果是

模板:再数数

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:{{{1}}}|四| | {{{1}}}|四}}}}的结果是

模板:再数数

调用{{[[{{#switch:

|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:{{{1}}}|{{{2}}}| | {{{1}}}|{{{2}}}}}}}的结果是

模板:再数数

例4:参数赋值中包含参数

如果一个参数未赋值,则在三个大括号中的参数名在模板调用时不起参数的作用。如果要它起作用,一定要赋值。

{{再数数|二}}
调用{{[[{{#switch:
|#default = 数数A 
| = 
   {{#ifeq:  | 
     | Template:数数A            
     | 数数A      
   }}

}}|数数A]]{{#if:四| | 四}}}}的结果是:

模板:数数A
{{再数数|二|{{{1}}}}}
调用{{[[{{#switch:
|#default = 数数B 
| = 
   {{#ifeq:  | 
     | Template:数数B            
     | 数数B      
   }}

}}|数数B]]{{#if:四| | 四}}}}的结果是:

模板:数数B
{{再数数|二|2={{{1}}}}}
调用{{[[{{#switch:
|#default = 数数C 
| = 
   {{#ifeq:  | 
     | Template:数数C            
     | 数数C      
   }}

}}|数数C]]{{#if:四| | 四}}}}的结果是:

模板:数数C

例5:参数迭代

最简单的参数迭代办法就是在模板中用同样的参数名。

模板Template:姓名国籍中使用

{{姓名|姓={{{姓}}}|名={{{名}}}}}{{{国籍}}}人。

进一步

{{再数数||四}}这样的调用将空值赋给参数1,而不是没有赋值,所以结果是

模板:再数数

如果我们希望参数1不赋值,则应该将参数2用命名参数形式赋值,如

{{[[{{#switch: 
|#default = 再数数 
| = 
   {{#ifeq:  | 
     | Template:再数数            
     | 再数数      
   }}

}}|再数数]]{{#if:2=四| | 2=四}}}} 结果则是

模板:再数数

如果这样的参数值被赋给如<font size>这样的标记,会使编码错误,但这些错误会被系统(MediaWiki)忽略,而不产生奇怪的结果。请参看英文的例子:字体大小

参数“02”和参数“2”是不同的,例如模板Template:例5的内容是

{{{1}}}{{{2}}}{{{02}}}

调用{{[[{{#switch:

|#default = 例5 
| = 
   {{#ifeq:  | 
     | Template:例5            
     | 例5      
   }}

}}|例5]]{{#if:3|4|5|6| | 3|4|5|6}}}}的结果是

模板:例5

注意:维基系统名字空间的参数名是不同的,它们是$1, $2, ...,参见Help:名字空间Special:所有消息MediaWiki:Blockedtext

参数及模板命名

参数命名可以调用其他参数,如Template:XYZ内容为{{{{{{XYZ}}}}}},则调用{{XYZ|XYZ=SDF|SDF=789}}会把参数XYZ的值SDF作为参数名,显示参数SDF的值,即模板:XYZ。MediaWiki会把{{{{{{XYZ}}}}}}解析为{{{ {{{XYZ}}} }}}而不是{{ {{ {{XYZ}} }} }}(结果是{{ {{ 模板:XYZ }} }})。这里空格是敏感的。另外,调用其他参数仅可调用1层。如Template:XYZ2内容为{{{{{{{{{XYZ}}}}}}}}},则{{XYZ2|XYZ=SDF|SDF=ABC|ABC=789}}结果为模板:XYZ2

又如,Template:1a2b内容为{{{第一个|第一个未定}}}-{{{第二个|第二个未定}}},Template:nanb内容为{{1a2b|{{{1|第一个}}}={{{1|第一个}}}已定}},则{{nanb}}结果为模板:Nanb,{{nanb|第一个}}结果为模板:Nanb,{{nanb|第二个}}结果为模板:Nanb,{{nanb|第三个}}结果为模板:Nanb

又如,Template:testif内容为{{{test{{{test|}}}|{{{then}}}}}},则{{testif|test=11|test11=233}}结果为模板:Testif,{{testif|test=11|then=255}}结果为模板:Testif,{{testif|then=333}}结果为模板:Testif,{{testif|test=|then=335}}结果为模板:Testif

另外,如果模板名为参数,如Template:Sample2内容为{{{{{tc}}}}},则调用{{Sample2|tc=!}}相当于{{!}},显示为模板:Sample2。这里,{{{{{tc}}}}}解析为{{ {{{tc}}} }}而不是{{{ {{tc}} }}}。如果Template:Sample3内容为{{{ {{tc}} }}},{{[[{{#switch:

|#default = Tc 
| = 
   {{#ifeq:  | 
     | Template:tc            
     | Tc      
   }}

}}|tc]]{{#if:| | {{{arg}}}}}}}内容为in,则{{Sample3|in=11}}显示为模板:Sample3

模板调用时,模板名可以是解析器函数。如{{{{NAMESPACE}}1}}相当于{{[[{{#switch:

|#default = Help1 
| = 
   {{#ifeq:  | 
     | Template:help1            
     | Help1      
   }}

}}|help1]]{{#if:| | {{{arg}}}}}}},结果为模板:帮助1

模板名可以是另一个模板。如Template:tctc内容为{{tc}},{{{{tctc}}}}相当于{{tc}},结果为{{{{tctc}}}}。

可以使用参数选择模板名。如Template:Hist3内容为{{{{{2}}}x|{{{1}}}}}-{{{{{3}}}x|{{{1}}}}}-{{{{{4}}}x|{{{1}}}}},Template:1x内容为{{{1}}},Template:2x内容为{{{1}}}{{{1}}},Template:3x内容为{{{1}}}{{{1}}},则{{Hist3|4|3|2|1}}结果为模板:Hist3。又如Template:a2b2c2d内容为{{{{{1}}}|a{{{2}}}b{{{2}}}c{{{2}}}d}},Template:t2内容为start_{{{1}}}_middle_{{{2}}}_end,{{a2b2c2d|t2|V}}相当于{{t2|aVbVcVd}},即模板:A2b2c2d

模板可以多次嵌套。如{{3x|{{2x|{{3x|{{1x|{{2x|{{tc}}}}}}}}}}}}结果是模板:3x

跨语言链接

模板可以含有跨语言链接,但结果是所有调用模板的条目页面都含有了该跨语言链接,这通常是非常糟糕的事情。为了仅仅让模板本身拥有跨语言链接,而不包括使用模板的条目,我们必须使用<noinclude>标识。例如:

<noinclude>
[[en:Template:Europe]]
[[zh:Template:欧洲]]
</noinclude> 

注意:在模板中使用<noinclude>标识时要小心!不要在<noinclude>之前或者</noinclude>之后加空行,否则空行将被当作模板的一部分反映在调用模板的条目中。系统会自动忽略</noinclude>之后的单个空行。

例6:使用<noinclude>标识的后果

如果在例1中的模板Template:姓名加入跨语言链接

我是{{{姓}}}{{{名}}}。

<noinclude>
[[en:Template:Name]]
</noinclude>

{{[[{{#switch:

|#default = 姓名 
| = 
   {{#ifeq:  | 
     | Template:姓名            
     | 姓名      
   }}

}}|姓名]]{{#if:姓=张|名=飞| | 姓=张|名=飞}}}}调用例5中的模板Template:姓名时,结果是:

模板:姓名/链接

如果希望得到的结果是:

模板:姓名/不换行

Template:姓名加入跨语言链接应该不含有换行:

我是{{{姓}}}{{{名}}}。<NoInclude>

[[en:Template:Name]]
</NoInclude>

注意:我们推荐您使用后面一种方式使用<noinclude>标识。

如果模板不是在Template名字空间的,请干脆写:

我是{{{姓}}}{{{名}}}。<NoInclude>

[[en:Template:Name]]

不写</NoInclude>的原因是系统会在非Template的文档末尾加入空行。

模板分类

模板也要进行分类,目的是为了更好的整理模板,以便更好的使用和管理模板。模板的分类同条目的分类相似,可以参阅有关条目分类的帮助文件,如Help:分类等,不同之处在于对于模板的分类需要使用<noinclude>标识,如果不加<noinclude>标识,则不仅模板被分类,所有使用该模板的条目也被分入同一类。

所有模板的根目录(即分类)是Category:维基百科模板,所有模板分类名最后一定要含有“模板”二字,以区别于普通条目的分类。

例7:模板分类方法

将例1中的模板Template:姓名分为Category:人物模板,需要加入:

我是{{{姓}}}{{{名}}}。<noinclude>[[Category:人物模板]]</noinclude>

可以在X月x日用<includeonly>括住上首頁</nowiki></nowki>括住

标识

注意:以下内容只限于模板中使用的情况,在其他名字空间使用的情况请参考相关帮助文挡。

<noinclude>和<includeonly>

前面已经提到,<noinclude>标识的作用是将<noinclude></noinclude>之间的文本加入所在的模板页中,而不加入调用模板的条目或模板中,针对模板的说明、分类和跨语言链接都可以置于该标识之间。

例8:针对模板:网球男单世界第一分类:体育模板就可以置于<noinclude></noinclude>之间,而对于调用该模板条目的分类:网球运动员可以置于标识之外:

[[Category:网球运动员]]<noinclude>[[Category:体育模板]]</noinclude>

另外,<noinclude>和<includeonly>的關系如下:

<noinclude>A</noinclude>B<noinclude>C</noinclude>

等價于

A<includeonly>B</includeonly>C

<includeonly>

<includeonly>标识的作用跟<noinclude>标识的作用正好相反,是将<includeonly></includeonly>之间的文本加入所在的模板页中,而加入调用模板的页面中。

上面的例8中针对调用该模板的条目的分类Category:网球运动员实际上应该置于<includeonly></includeonly>之间:

<includeonly>[[Category:网球运动员]]</includeonly>

这样,在Category:网球运动员分类中就不会出现Template:网球男单世界第一模板了。

<onlyinclude>

<onlyinclude>标识不常用,其作用是只有被<onlyinclude></onlyinclude>包含的文本才出现在调用模板的页面中,模板的其他内容不出现在调用模板的页面中。

模板:Anchorsubst与preload过程中的noinclude、includeonly和IncludeOnly

以下部分行为是错误的,是旧版本软件的缺陷,并将随MediaWiki 1.17的部署被修正bugzilla:5210)。
解释与传递

帮助:模板/lpd

特殊的模板引用

  • 子页面引用
    • 格式:{{/子页面}}

模板:Hideh 帮助:模板/子页面 模板:Hidef

    • 引用过程中“子页面”的意义是引用模板的页面的子页面,而非被引用的模板的子页面。
  • 其它名字空间的模板引用
    • 格式:{{名字空间:子页面}}如{{Template talk:!}}

一般用法

模板的一般用法有:

提及模板

在某些情况下,我们可能需要提及某一个模板(而非调用它)。提及模板可用nowiki标签,但是已经有热心的用户建立了专门的模板,用于提及模板。

您所输入的 您所看到的
请您不要再随意删除{{afd}}模板。 请您不要再随意删除{{
 {{#switch:
 {{#if: 
main 帮助讨论 talk 帮助
       }}
     }} 
   }}
main = ambox talk = tmbox user = ombox wikipedia = ombox image = ombox mediawiki = ombox template = ombox help = ombox category = cmbox portal = ombox other #default = ombox

}}

type = delete image = 40px imageright = class = style = textstyle = text = 有編者認為此条目不適合存留在維基百科,可能需要被删除,此頁已經被列在模板:VfdLink進行存廢討論,{{#if:|提出存廢討論的理由為:{{{1}}}|請前往該頁以了解理由}}。
歡迎直接參與編輯改善此條目,並模板:VfdLink,以社群的討論結果決定存廢。
请不要清空、合并或移动此条目,也請勿移除此模板。请參看删除指导

模板:VfdNotice
small = smallimage = smallimageright = smalltext = subst = date = name = textconvert=

}}模板。

请您不要再随意删除<nowiki>{{afd}}</nowiki>模板。 请您不要再随意删除{{afd}}模板。
请您不要再随意删除{{tl|afd}}模板。 请您不要再随意删除{{[[{{#switch: #default = Afd =
   {{#ifeq:  | 
Template:afd Afd
   }}

}}|afd]]{{#if:| | {{{arg}}}}}}}模板。

欢迎新用户可以使用{{tls|welcome}}语法,但不要使用{{tl|welcome}}语法。 欢迎新用户可以使用模板:Tls语法,但不要使用{{[[{{#switch: #default = Welcome =
   {{#ifeq:  | 
Template:welcome Welcome
   }}

}}|welcome]]{{#if:| | {{{arg}}}}}}}语法。

[[:Template:nosign]]的用法如下:</br>{{tlx|nosign|用户留言时间|用户名}} Template:nosign的用法如下:</br>{{{{#if:|subst:}}nosign{{#if:用户留言时间|

|用户留言时间 }}{{#if:用户名| |用户名 }}{{#if:| |{{{4}}} }}{{#if:| |{{{5}}} }}{{#if:| |{{{6}}} }}{{#if:| |{{{7}}} }}{{#if:| |{{{8}}} }}{{#if:| |{{{9}}} }}{{#if:| |{{{10}}} }}{{#if:| |{{{11}}} }}{{#if:| |... }}}}

{{tnull|nosign|用户留言时间|用户名}}用于补签名。 模板:Tnull用于补签名。

类似语法

{{CURRENTYEAR}}、{{DISPLAYTITLE:}}等等为魔术字。魔术字可以返回关于当前页面、wiki站点或日期的信息,也可以设置数据。参见Help:魔术字#变量

调用解析器函数的语法是{{#xxx:}}。如{{#ifeq:{{{lang}}}|zh|我使用中文|I don't use Chinese}}给出{{#ifeq:{{{lang}}}|zh|我使用中文|I don't use Chinese}}。

读取模板参数是三个大括号,形如{{{1|}}}、{{{date}}}。详见#读取参数

参见

中文

英文

参考资料

<references/>

模板:- 模板:H:f Help