“首页”的版本间的差异

来自华清远见研发中心
跳转至: 导航搜索
(以“== 什么是模板,为什么要用模板 == == 调用模板 == === 设定参数 === ==== 需要转义的参数 ==== ===替换引用=== == 嵌入页面 == == 创建并...”替换内容)
第1行: 第1行:
 
== 什么是模板,为什么要用模板 ==
 
== 什么是模板,为什么要用模板 ==
您在条目的上方看到各种各样的条条框框,比如“本条目需要清理”、“本条目应避免有陈列杂项、琐碎资料的部分。”等。有时候条目右侧也能看到一个灰色的框,里面写着有关这个条目的基本信息,比如一位艺人的“生日”、“出生地”、“国籍”等。条目最下方有时候也会见到一个大方框,里面陈列着和这个条目相关的内容(称为“[[WP:导航模板|导航模板]]”,[[模板:Wikipedia essays|比如这个]])。这些都是“模板”。模板的形式还有很多很多,有的是直接镶嵌在条目正文里面的,有的虽然看不到但是却依然影响到条目显示的内容(比如[[T:NoteTA|字词转换模板]])。但是如果你翻翻这些条目的源代码,就会发现这些模板都长成类似“{{Code|<nowiki>{{模板名字|模板参数}}</nowiki>}}”这样子,用一对双大括号将模板的内容扩起来。
 
 
为什么有这些麻烦的东西?有时候,一段内容会在多个条目中反复出现,这时候如果一遍一遍复制那些内容,一遍遍粘贴到各个条目里面,简直会累死人,而且大段大段的看起来也很烦人;而且,万一日后内容有变动,又要进到各个条目里面把这些内容一个个全改一遍,这会产生大量的重复劳动。模板就是为了这样的目的:只需要给重复的部分放到一个模板里、起个名字,以后需要用到这些内容的时候直接调用模板就行了。需要更改内容的时候,也只需要在模板里改动,那些调用了模板的条目也会随着模板自动变更,十分方便。
 
 
所有的模板都会放在一个叫“Template”的[[WP:NS|名字空间]],即“[[WP:模板名字空间|模板名字空间]]”,标题名稱是“<code>Template:模板名字</code>”、“<code>模板:模板名字</code>”这样。在写作条目时,只需要在合适的位置放上“{{Code|<nowiki>{{模板名字}}</nowiki>}}”,模板就会在合适的地方显示出来了。有时候对于同一个模板,雖然显示的内容稍有差异,但大体的框架是一致的,这个时候就会用到“模板参数”,即“{{Code|<nowiki>{{模板名字|模板参数}}</nowiki>}}”的形式,具体的用法请见下文。
 
 
需要注意的一点是,维基百科的系统——MediaWiki本身并不会自动为条目挂上模板。因此,当看到条目里面显示了“本条目需要补充更多来源”等文字时,是其他维基人人工将模板挂上去。在模板所述问题修正之后,可以自行将模板从源代码中删除,这段提示文字將自动消失。
 
  
 
== 调用模板 ==
 
== 调用模板 ==
调用模板就是把模板内容嵌入到调用方页面。
 
 
在Template[[WP:命名空间|命名空间]]里的页面才是模板,所以模板都由'''Template:'''开头,在中文维基,以'''模板:'''开头同样有效。调用时必须使用'''模板标签''',即<nowiki>{{Template:模板名}}</nowiki>的形式,“Template:”可以在无歧义的情况下省略。如[[Template:tc]]是一个模板,内容为“in”。如果把<code>{{tl|tc}}</code>加入某个页面,则{{tl|tc}}的内容会在此頁面显示,即{{tc}}。
 
 
如果“[[Template:模板名]]”不存在,<code><nowiki>{{模板名}}</nowiki></code>的作用就与<code><nowiki>[[Template:模板名]]</nowiki></code>相同,提供一个连接到不存在页面的链接:{{模板名}}。
 
 
模板可以被[[WP:重定向|重定向]]。[[Template:请求来源]]被重定向到[[Template:Fact]],所以<nowiki>{{请求来源}}</nowiki>效果等同于<nowiki>{{fact}}</nowiki>。有时移动模板并建立重定向后,原调用重定向的页面可能会出错,只要过一段时间(几小时)等服务器刷新缓存即可。
 
  
 
=== 设定参数 ===
 
=== 设定参数 ===
在模板名后可用管道符(即竖线)追加参数(这种做法称为'''传参''')。参数有编号参数和命名参数两种。在模板的说明文档里一般会列出该模板的所有参数。
 
 
例如,{{Code|<nowiki>{{fact|1=维基百科的编者大部分是男性|time=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki>}}</nowiki>}}得到「{{fact|1=维基百科的编者大部分是男性|time={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}}}」。
 
 
“维基百科的编者大部分是男性”的参数名为<code>1</code>。“{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}”的参数名为<code>time</code>。参数名为数字就是'''编号参数''',否则就是'''命名参数'''。
 
 
编号参数的参数名(1、2、3、4等)和等号可以省略。上例的效果和<nowiki>{{fact|维基百科的编者大部分是男性|time=</nowiki>{{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki>}}</nowiki>是一样的。注意,以省略形式赋值的第一个编号参数的参数名是1,而不是很多编程语言习惯的0。
 
 
{| class="wikitable"
 
|-
 
! 调用 !! 效果
 
|-
 
|{{tlc|catnav|页面分类|地理|大洲|亚洲|亚洲国家}} || {{catnav|页面分类|地理|大洲|亚洲|亚洲国家}}
 
|-
 
|{{tlc|catnav|2='''0=页面分类'''|3=1=地理|4=2=大洲|5=3=亚洲|6=4=亚洲国家}} || {{catnav|0=页面分类|1=地理|2=大洲|3=亚洲|4=亚洲国家}}
 
|-
 
|{{tlc|catnav|2=1=页面分类|3=2=地理|4=3=大洲|5=4=亚洲|6=5=亚洲国家}}|| {{catnav|1=页面分类|2=地理|3=大洲|4=亚洲|5=亚洲国家}}
 
|-
 
|{{tlc|catnav|2=5=亚洲国家|3=4=亚洲|4=3=大洲|5=2=地理|6=1=页面分类}}|| {{catnav|5=亚洲国家|4=亚洲|3=大洲|2=地理|1=页面分类}}
 
|-
 
|{{tlc|catnav|2=1=页面分类|3=2=地理|4='''大洲'''|5=4=亚洲|6='''亚洲国家'''}}
 
 
'''要么全不省略编号参数参数名,要么全都省略,否则极易出错。'''
 
 
可以理解为参数1第一次赋值为“页面分类”,然后“大洲”作为隐藏的参数1第二次赋值覆盖了第一次赋值的内容。
 
 
如此类推。
 
 
在编辑预览中会警示这种重复赋值问题。
 
||{{catnav|1=页面分类|2=地理|大洲|4=亚洲|亚洲国家}}
 
|}
 
  
 
==== 需要转义的参数 ====
 
==== 需要转义的参数 ====
*如果参数值中含有等号(<code>=</code>),传参时则必须使用参数名,即使是编号参数也要使用。
 
*如果参数值中含有两个连续的右大括号(<code><nowiki>}}</nowiki></code>),调用参数时必须将其放入nowiki标记中,例如<code><nowiki><nowiki>}}</nowiki></nowiki></code>。
 
*如果参数值中含有竖线(<code><nowiki>|</nowiki></code>),调用参数时必须将其放入nowiki标记中,例如<code><nowiki><nowiki>|</nowiki></nowiki></code>,或用<code><nowiki>{{!}}</nowiki></code>代替<ref>{{cite web|title=[[Help:魔术字#.E5.85.B6.E4.BB.96]]|date=2015-08-02}}</ref><ref>{{cite web|url=https://gerrit.wikimedia.org/r/#/c/136234/|title=MediaWiki更新记录|date=2015-08-02}}</ref>。
 
<!--请改良下面这行-->
 
<!--*参数值可以很长,比如这个[http://zh.wikipedia.org/w/index.php?title=Help:%E6%A8%A1%E6%9D%BF&action=edit§ion=13 例子]。-->
 
*参数值中可以包含一对双方括号(即两个左方括号,两个右方括号),用于链接一个条目,或是其他[[Help:名字空间|名字空间]]的页面,但不能先写右双方括号,然后再接左双方括号。例如[[Template:数数1]]中的内容是:
 
<pre>
 
[[一二{{{1}}}六七]]
 
</pre>
 
:{{tlc|数数1|<nowiki>三]]四[[五</nowiki>}}会造成模板调用失败,显示为:
 
-{}-{{数数1|三]]四[[五}}
 
:而不是你所期望的
 
[[一二三]]四[[五六七]]
 
:不過可以使用{{tlx|!((}}(<nowiki>[[</nowiki>)及{{tlx|))!}}(<nowiki>]]</nowiki>)來讓這個結果成真,因此:
 
<pre>-{}-
 
{{数数1|三{{))!}}四{{((!}}五}}
 
</pre>
 
會變成:
 
  -{}-{{数数1|三{{))!}}四{{!((}}五}}
 
  
 
===替换引用===
 
===替换引用===
{{main|Help:替换引用}}
 
另见[[:分类:应被替换引用的模板]]
 
 
放置修饰符“subst:”(substitute,替代)位于模板标签的“{{”之后,模板名之前,即可替换引用。它能在调用方页面保存时,将所调模板展开,而不是每次显示页面的时候读取有关模板。这样可以按模板当前的形式编辑条目,并使条目免受模板变化的影响,并减轻服务器负担。所以对模板的替换引用不会显示在页面历史和模板的链入页面中。
 
 
例如{{tl|fact/auto}}和{{tl|未签名}}都是应被替换引用的模板。
 
  
 
== 嵌入页面 ==
 
== 嵌入页面 ==
{{Main|WP:嵌入包含}}
 
模板标签不仅可以调用模板,也可以调用(嵌入)其他页面,就是像模板一样把被调页面的内容加入到调用方页面。
 
 
* <code><nowiki>{{帮助讨论:模板}}</nowiki></code>会将[[帮助讨论:模板]]中的内容加入到该页来。
 
* 如果调用[[WP:命名空间|主命名空间]]的条目,为了避免和调用同名模板产生歧义,需要在条目名前加冒号。如<code><nowiki>{{:福寿岭站}}</nowiki></code>会将[[福寿岭站]]中的内容加入到该页来,而不是调用<nowiki>{{福寿岭站}}</nowiki>({{福寿岭站}})。
 
 
这样一来,所有页面都可以当作是模板。但是,使用在模板名字空间的页面(即真正的模板)有以下独特的好处:
 
*所有被页面使用的模板都在页面编辑页显示出来。
 
*当模板改变时,所有使用模板页面的服务器缓存(相对于浏览器缓存)自动被清空;而位于其他名字空间的页面,服务器缓存往往要手工清空。
 
 
而模板名字空间以外的页面一般在如下情况下被嵌入其他页面:
 
*引用维基百科名字空间的界面消息。
 
*将一個长页面(可以屬于主条目名字空间,假設名字就叫做“长页面”,[http://zh.wikipedia.org/w/index.php?title=%E8%A5%BF%E6%B1%89%E5%88%97%E4%BE%AF%E5%88%97%E8%A1%A8_%28%E5%8A%9F%E8%87%A3%E4%BE%AF%29&action=historysubmit&diff=16538515&oldid=16345825 例子])拆分为较短页面时,可以将短页面命名为“长页面/第一部分”、“长页面/第二部分”等,然后使用<code><nowiki>{{/第一部分}}<br />{{/第二部分}}</nowiki></code>来拼成长页面。[[Wikipedia:互助客栈 (全部)]]就是一个好例子。
 
 
一个模板可以调用另一个模板,它也可以调用它自己,但自我调用只有一层有效。例如:[[Template:模板1]]的内容是<code><nowiki>“一次,{{模板1}}”</nowiki></code>,在[[Template:模板1]]中将显示:<nowiki>“一次,一次,{{模板1}}”</nowiki>,如果其他条目调用该模板,所加入的文字将是
 
 
{{模板1}}
 
 
在2010年前,如果把其他模板重定向至某模板,该模板又引用重定向,且多次自我调用均为不同重定向,则该模板可以实现多次自我调用。MediaWiki后来取消此功能。如{{tl|RR|7}}的结果为{{RR|7}}。
 
 
模板中[[Help:变量|变量]]在调用模板的地方被赋值。因此,如果一个模板中含有<code><nowiki>{{PAGENAME}}</nowiki></code>,该模板被某页面调用,相应的位置显示的将是调用方的名称,而不是被调模板的名称。
 
 
一个页面所调用的所有模板都在该页编辑页面中列出,并提供相应的链接,而且:
 
*一个段落的编辑页面不会列出任何模板;
 
*编辑旧版本的页面,这个列表仍然是当前最新的;
 
*可加入[[Help:模板擴展語法|模板擴展語法]]#if, #ifeq, #ifexist, #ifexpr, 或 #switch;
 
*如果不真正提交编辑,仅仅在预览中使用的模板不被列出。
 
*如果模板名里面嵌套另一个模板,如<nowiki>{{{{tc}}{{CURRENTDAY}}}}</nowiki>,则会得到{{{{tc}}{{CURRENTDAY}}}};编辑页面里会显示[[Template:{{tc}}{{CURRENTDAY}}]]。
 
*模板名#后的内容会忽略。
 
 
请注意,如果页面结尾没有换行,编辑页面中总是在结尾添加一个换行,但这并不影响模板的某些效果,即这个换行不真正起作用。例如:
 
<nowiki>{{编号演示}}{{编号演示}}</nowiki>
 
<nowiki>{{编号演示}}</nowiki>
 
的结果是:
 
{{编号演示}}{{编号演示}}
 
{{编号演示}}
 
  
 
== 创建并编辑模板 ==
 
== 创建并编辑模板 ==
维基百科现存大量模板供编者使用,如果有现存模板可以完成您的任务,则应该调用现有模板,而不是另建新模板。<!-- (页面不存在) 关于模板的制作规范,请参见[[WP:模板规范]]。-->
 
  
您在新建模板前,请先搜索相应的模板名称,如“Template:维基百科模板”。新建模板后,请在[[Wikipedia:模板消息]]内添加您新建的模板的信息,并请对模板进行分类。模板分类的方法请参考[[:Category:维基百科模板]]以及[[:Category talk:维基百科模板]]中的相关内容。
 
 
当您在模板中需要使用图标时,建议使用维基共享资源[[commons:Crystal Clear|水晶风格图标库]]中提供的图标。
 
 
模板页面会自动调用这个模板本身,实际上相当于一次没有参数赋值的模板调用,因此如果参数有默认值,将被显示。例如:模板[[Template:数一数]]的内容是
 
<nowiki>一二三{{{1|四五六}}}七八九</nowiki>
 
模板页面的内容是
 
:{{数一数}}
 
  
 
===读取参数===
 
===读取参数===
 
在模板页面中,用三个[[大括号]]可以读取参数,例如:{{code|{{參數|参数1|参数1的默认值}}}}可以读取''参数1'',如果在模板调用中参数1没有赋值,则使用''参数1的默认值''作为参数1的赋值。另见[[Help:默认参数]]
 
 
'''注意:'''参数默认值和参数赋空值是不同的。
 

2020年7月24日 (五) 18:53的版本

什么是模板,为什么要用模板

调用模板

设定参数

需要转义的参数

替换引用

嵌入页面

创建并编辑模板

读取参数