模板:Infobox
| 此模板被引用于约774,000个页面,占全部页面的9%。 为了避免造成大规模的影响,所有对此模板的编辑应先于沙盒、测试样例或您的沙盒上测试。 测试后无误的版本可以一次性地加入此模板中,但是修改前请务必于讨论页发起讨论。 模板引用数量会自动更新。 |
| 此模板使用Lua语言: |
本模板为一系列“资讯框”模板的元模板,亦即本模板用于构建其他模板。通常不建议在条目中直接使用此模板,但是如有需要,可以在个别“一次性”情况中直接使用。参见Help:资讯框以获取创建通用资讯框的进一步方法。
用法
本模板与{{navbox}}的用法相似,但也有一些不同之处。表格中的每一行既可以是顶栏(header),也可以是成对的标签(label)与数据(data),甚至还可以只是一个数据单元。每行只能有一种状态,且具有优先级:当你将一行同时定义为顶栏与标签/数据对,那么标签/数据对的定义将会被忽略。
编号
为方便日后更改资讯框格式,header和label/data行的编号不需要完全按照1、2、3……的加一顺序编写,可以在中间预留一些行编号不用,可避免将来如要增加新行时要把该行后面的行编号一并更改。
header和label/data行的编号不可以重复,例如不可以同时使用header1和label1/data1,请使用header1、label2/data2(举例)。
如希望大量移动编号(如为加入新label需将所有之后的label数字加一),可考虑使用模块:IncrementParams。
参数
“查看/讨论/编辑/历史”链接
- name
- “查看/讨论/编辑/历史”链接需要指向模板页的名称(name)。你可以填写{{subst:PAGENAME}}。如果此参数未填,则“查看/讨论/编辑/历史”链接不会显示。
标题
| (资讯框的其余部分) |
| 资讯框内的标题文本 | |
|---|---|
| (资讯框的其余部分) |
有两种方式为一个资讯框填入标题。一种是将标题填在资讯框外,另一种则是填写在资讯框内。根据需要,你可以选择其中的一种使用,亦或同时使用这两种标题,甚至都不使用(尽管我们不推荐这样做)。
- title
- 填写在资讯框表格外顶部的标题文本。
- above
- 填写在资讯框表格内顶部单元的标题文本。
可选项
- subheader
- 在 above 下面的次标题。subheader2是第2个次标题。
- image
- 在模板上部显示的图像。请使用完整的图像语法,例如[[File:example.png|200px]],推荐使用模块:InfoboxImage插入图像。图像的位置默认为居中。
在中文维基百科,一个Infobox最多可使用4个图像参数:overimage(置顶)、image(=image1)、image2、image3,与英文维基百科的Infobox仅提供image(=image1)、image2不同。 - caption
- 位于图像下方的说明文本。
overcaption、caption(=caption1)、caption2、caption3分别对应上面4个图像参数。 - header(n)
- 填入第n行的顶栏文本。
- label(n)
- 填入第n行的标签文本。
- data(n)
- 填入第n行的数据文本。
- below
- 填写在资讯框表格底部单元的文本。底部单元一般用来填写脚注、参见及其他类似的资讯。
可选的CSS风格
- bodystyle
- 应用到资讯框表格全体。
- titlestyle
- 应用到资讯框表格外的标题中。不建议在此处填写背景颜色(background color),因为该处的文字位于资讯框外。
- abovestyle
- 应用到资讯框表格内顶部单元中。默认的风格为“
font-size:large;”(字号设为大号),因为该单元常被用作标题。如果你希望让顶部单元以正常字号显示,只需在该处填写的内容中包含“font-size:medium;”。 - imagestyle
- 应用到资讯框的图像单元中,包括图像下方的说明文本。但是,出于兼容性与未来修改的考虑,如果你需要设置说明文本的属性,请使用captionstyle而不要使用imagestyle。
- captionstyle
- 应用到图像说明文本中。
- headerstyle
- 应用到所有的顶栏单元。
- header(n)style
- 应用到第n行的顶栏单元。
- labelstyle
- 应用到所有的标签单元。如果希望避免标签文字折行显示,只需在该处填写的内容中包含“
white-space:nowrap;”。或者例如“min-width: 4em;”。 - label(n)style
- 应用到第n行的标签单元。
- datastyle
- 应用到所有的数据单元。
- data(n)style
- 应用到第n行的数据单元。
- belowstyle
- 应用到底部单元中。
微格式
- bodyclass
- 该参数影响资讯框整体的类(class)。
- imageclass
- 该参数影响图像的类。
- class(n)
- 该参数影响特定行数据单元的类。如果资讯框没有数据单元,则不会产生作用。
- titleclass
- 该参数影响资讯框外标题的类。
- aboveclass
- 该参数影响资讯框内标题的类。
通过为各个数据单元定义类名,本模板可以支持微格式资讯;此处所说的类名,是根据标准定义的,且可以向机器表明资讯的类型。例如,如果一个资讯框使用了hCard的微格式,要在资讯框内标记此微格式,则填写以下参数:
|bodyclass = vcard
并为每一个包含了vcard所需数据单元的行添加相应的类参数:
|class1 = fn |class2 = org |class3 = tel
等等。用于显示资讯框主题的“above”和“title”也可以指定类。
请在Wikipedia:专题/微格式以获取在维基百科添加微格式资讯的进一步资讯,访问microformats.org网站亦能获取更一般性的资讯。
表格域可选项
如果表格的一行只有标签而没有数据,那么该行将不会显示。这样可以方便编者创建选填内容的行。要让某行成为可选项,只需填写一个默认为空字段的参数即可:
|label5 = 人口
|data5 = {{{population|}}}
这样的话,如果在条目中不定义“population”参数,则资讯框的那一行不会被显示。
如果表格的一行填写的是预设格式内容(即除了参数外,还有其他内容),而又希望让该行成为可选项的话,你可以通过“#if”语句实现。当参数为空时,令所有的内容均不被呈现。譬如,在下面的例子里,“#if”会判断参数“mass”是否不为空,若不为空则显示它,并跟上“千克”的后缀:
|label6 = 质量
|data6 = {{#if:{{{mass|}}} |{{{mass}}}千克}}
更多关于#if的用法,参见此处。
如果你希望顶栏只在其下方的某个或多个数据单元有内容时才显示,以下的例子可以指导你如何实现:
{{Infobox
|name = {{subst:PAGENAME}}
|title = 可选顶栏的用例
|autoheaders = y
|header1 = 可选顶栏
|label2 = 项目一
|data2 = {{{item_one|}}}
|label3 = 项目二
|data3 = {{{item_two|}}}
|label4 = 项目三
|data4 = {{{item_three|}}}
}}
这样,只有在参数“item_one”、“item_two”或“item_three”其中之一被填写时,“header1”才会被显示。如果上述三个参数均未被定义,则顶栏不会显示。
过去在实现这一功能时,需嵌套冗长的“#if”语法,现在只需设置|autoheaders=y即可。
用例
注意到,当标签脱离数据单元单独定义时,所定义的那一行并未出现在资讯框内;而当顶栏与标签、数据定义在同一栏时,顶栏将会优先显示。
在下面的例子中,定义了“bodystyle = width:20em;”和“labelstyle = width:33%;”。
| 标签1 | 数据1 |
|---|---|
| 标签2 | 数据2 |
| 标签3 | 数据3 |
| 顶栏4 | |
| 标签5 | 数据5:叽里呱啦稀里哗啦。 |
| 下方文本 | |
完整模板
(备注:本模板目前最多可以同时处理80行表格,一般的资讯框模板只会用到前20行的参数,因此此处省略了后60行的参数。需使用时可依此类推。微格式“class”参数亦被省略,因其不常被用到,使用时请自行添加。)
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| bodystyle =
| titlestyle =
| abovestyle =
| subheaderstyle =
| title =
| above =
| subheader =
| imagestyle =
| captionstyle =
| image =
| caption =
| image2 =
| caption2 =
| headerstyle =
| labelstyle =
| datastyle =
| header1 =
| label1 =
| data1 =
| header2 =
| label2 =
| data2 =
| header3 =
| label3 =
| data3 =
| header4 =
| label4 =
| data4 =
| header5 =
| label5 =
| data5 =
| header6 =
| label6 =
| data6 =
| header7 =
| label7 =
| data7 =
| header8 =
| label8 =
| data8 =
| header9 =
| label9 =
| data9 =
| header10 =
| label10 =
| data10 =
| belowstyle =
| below =
}}
