此模板使用Lua语言: |
本模板为一系列信息框模板的元模板,亦即本模板用于构建其他模板。通常不建议在条目中直接使用此模板,但是如有需要,可以在个别“一次性”情况中直接使用。
用法
本模板与{{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}}。如果此参数未填,则“查看/讨论/编辑/历史”链接不会显示。
- child
- 有关详细信息,请参阅嵌入嵌入部分。 如果设置为“yes”,这个子信息框应该有 title 但没 name 参数。该参数默认为空,设置为“yes”即可激活。
- subbox
- 有关详细信息,请参阅 Subboxes 部分。 如果设置为“yes”,这个子框应该有title 但没 name 参数。该参数默认为空,设置为“yes”激活。如果 child 参数也设置为“yes”,则无效。
- decat
- 如果设置为“yes”,当生成的信息框有一些问题或没有可见的数据部分时,当前页面将不会自动分类到维护类别中。默认留空或设置为“yes”以激活它。
- autoheaders
- 如果将其设置为任何非空值,则不跟随数据字段的标头将被抑制。有关详细信息,请参阅“所有数据字段为空时隐藏标题”部分。
标题
(信息框的其余部分) |
信息框内的标题文本 | |
---|---|
(信息框的其余部分) |
有两种方式为一个信息框填入标题。一种是将标题填在信息框外,另一种则是填写在信息框内。根据需要,你可以选择其中的一种使用,亦或同时使用这两种标题,甚至都不使用(尽管我们不推荐这样做)。
- title
- 填写在信息框表格外顶部的标题文本。
- above
- 填写在信息框表格内顶部单元的标题文本。
可选项
- subheader
- 在 above 下面的子标题。subheader2是第2个子标题。
信息框的子标题 | |
{{Infobox
| name = {{subst:PAGENAME}}
| title = 信息框外的标题文本
| subheader = 信息框的子标题
| header = (信息框的其余部分)
}}
信息框内的标题文本 | |
---|---|
信息框的子标题 | |
信息框的第二个子标题 | |
{{Infobox
| name = {{subst:PAGENAME}}
| above = 信息框内的标题文本
| subheader = 信息框的子标题
| subheader2 = 信息框的第二个子标题
| header = (信息框的其余部分)
}}
插图图像
- image
- 在模板上部显示的图像。请使用完整的图像语法,例如[[File:示例.png|200px|alt=示例替代文本]],推荐使用模块: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行的数据文本。
注意:对于 (n) 的任何给定值,并非所有参数组合都是允许的。|header(n)=
的存在将导致相应的|data(n)=
(和|rowclass(n)=
|label(n)=
,见下文);被忽略;缺少 |data(n)=
将导致相应的 |label(n)=
被忽略。任何单行的有效组合为:
|class(n)=
|header(n)=
|rowclass(n)=
|class(n)=
|data(n)=
|rowclass(n)=
|label(n)=
|class(n)=
|data(n)=
请参见下面示例部分中 header4、label4 和 data4 的呈现。
数字范围
为了在更改信息框的布局时提供灵活性,在开发信息框时,为标题和标签/数据行使用非连续数字可能会有所帮助。以后可以插入新行的参数,而无需对现有参数重新编号。例如:
| header3 = 第一节
| label5 = 标签 A
| data5 = 数据 A
| label7 = 标签 C
| data7 = 数据 C
| header10 = 第二节
| label12 = 标签 D
| data12 = 数据 D
还可以使用Module:IncrementParams自动重新编号参数名称。
使数据字段可选
不显示带有标签但没有数据的行。这允许轻松创建可选的infobox内容行。要使行可选,请使用默认为空字符串的参数,如下所示:
| label5 = Population
| data5 = {{{population|}}}
这样,如果一篇文章没有在其信息框中定义人口参数,该行将不会显示。
对于包含预格式化内容的更复杂字段,即使未设置参数,也会显示这些内容,可以将其全部封装在“#if”语句中,以便在不使用参数时使整个内容消失。例如,以下示例中的“#if”语句读作“#if:已提供参数“mass”|然后显示它,后跟“kg”:
| label6 = Mass
| data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }}
所有数据字段为空时隐藏标题
当标题的部分为空(没有显示数据行)时,也可以使标题自动隐藏。
考虑这种情况:
带空数据段的 Header1 | |
---|---|
Header5,数据如下 | |
标签6 文本 | Some value |
{{Infobox
| title = 示例:包含和不包含数据的标题
| headerstyle = background:lightgrey
| header1 = 带空数据段的 Header1
| label2 = 标签2 文本 | data2 =
| label3 = 标签3 文本 | data3 =
| label4 = 标签4 文本 | data4 =
| header5 = Header5,数据如下
| label6 = 标签6 文本 | data6 = Some value
}}
如果要在不存在|dataN=
值时隐藏标头,请使用|autoheaders=y
:
Header5,数据如下 | |
---|---|
标签6 文本 | Some value |
{{Infobox
| title = 示例:包含和不包含数据的标题
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = 带空数据段的 Header1
| label2 = 标签2 文本 | data2 =
| label3 = 标签3 文本 | data3 =
| label4 = 标签4 文本 | data4 =
| header5 = Header5,数据如下
| label6 = 标签6 文本 | data6 = Some value
}}
因此,如果定义了第1项、第2项或第3项中的任何一项,将显示header1。如果三个参数均未定义,则标题将不会显示,并且在下一个可见内容之前不会出现空行。
注意:如果数据有空的css元素,比如|data=<span style="background:yellow;"></span>
,这将被视为非空(有数据)。
如果|autoheaders=y
,但是有一些项是你“不”想触发一个 header ,那么把|headerX=_BLANK_
放在那里。这将用作空标题,并将其与后续项目分开。
label6 文本 | 某些值,但不会触发 header1 或显示 header5 |
---|
{{Infobox
| title = 示例:带数据和不带数据的空白标题
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = 带空数据段的 Header1
| label2 = label2 文本 | data2 =
| label3 = label3 文本 | data3 =
| label4 = label4 文本 | data4 =
| header5 = _BLANK_
| label6 = label6 文本 | data6 = 某些值,但不会触发 header1 或显示 header5
}}
页脚
- below
- 填写在信息框表格底部单元的文本。底部单元一般用来填写脚注、参见及其他类似的信息。
显示参数
可选的CSS风格
- bodystyle
- 应用到信息框表格全体。
- titlestyle
- 应用到信息框表格外的标题中。不建议在此处填写背景颜色(background color),因为该处的文字位于信息框外。
- abovestyle
- 应用到信息框表格内顶部单元中。默认的风格为“
font-size:large;
”(字号设为大号),因为该单元常被用作标题。如果你希望让顶部单元以正常字号显示,只需在该处填写的内容中包含“font-size:medium;
”。 - imagestyle
- 应用到信息框的图像单元中,包括图像下方的说明文本。但是,出于兼容性与未来修改的考虑,如果你需要设置说明文本的属性,请使用captionstyle而不要使用imagestyle。
- captionstyle
- 应用到图像说明文本中。
- rowstyle(n)
- 此参数插入到指定行的
style
属性中。 - headerstyle
- 应用到所有的顶栏单元。
- header(n)style
- 应用到第n行的顶栏单元。
- subheaderstyle
- 应用到所有子标题单元格
- labelstyle
- 应用到所有的标签单元。如果你希望让标签文字不换行显示,只需在该处填写的内容中包含“
white-space:nowrap;
”。 - label(n)style
- 应用到第n行的标签单元。
- datastyle
- 应用到所有的数据单元。
- data(n)style
- 应用到第n行的数据单元。
- belowstyle
- 应用到底部单元中。
HTML类和微格式
- bodyclass
- 该参数影响信息框整体的类(class)。
- titleclass
- 该参数影响信息框外标题的类。
- aboveclass
- 该参数影响信息框内标题的类。
- aboveclass
- 此参数插入到信息框的“上方”单元格的类属性中。
- subheaderrowclass(n)
- 此参数被插入到“subheader”所在的完整表行的类属性中。
- subheaderclass(n)
- 此参数被插入到信息框“subheader”的类属性中。
- imagerowclass(n)
- 这些参数被插入到完整表行的类属性中,它们各自的“图像”处于启用状态。
- imageclass
- 该参数影响图像的类。
- rowclass(n)
- 此参数被插入指定行的类属性中,该行包括“'label'”和“'data'”单元格。
- class(n)
- 该参数影响特定行数据单元的类。如果信息框没有数据单元,则不会产生作用。
通过为各个数据单元定义类名,本模板可以支持微格式信息;此处所说的类名,是根据标准定义的,且可以向机器表明信息的类型。例如,如果一个信息框使用了hCard的微格式,要在信息框内标记此微格式,则填写以下参数:
|bodyclass = vcard
并为每一个包含了vcard所需数据单元的行添加相应的类参数:
|class1 = fn |class2 = org |class3 = tel
等等。用于显示信息框主题的“above”和“title”也可以指定类。
请在Wikipedia:专题/微格式以获取在维基百科添加微格式信息的进一步信息,访问microformats.org网站亦能获取更一般性的信息。
示例
注意到,当标签脱离数据单元单独定义时,所定义的那一行并未出现在信息框内;而当顶栏与标签、数据定义在同一栏时,顶栏将会优先显示。
在下面的例子中,定义了“bodystyle = width:20em;
”和“labelstyle = width:33%;
”。
标签1 | 数据1 |
---|---|
标签2 | 数据2 |
标签3 | 数据3 |
顶栏4 | |
标签5 | 数据5:叽里呱啦稀里哗啦。 |
下方文本 | |
嵌入
可以使用|child=
参数将一个infobox模板嵌入到另一个infobox模板中。此功能可用于创建模块化信息框,或创建定义更好的逻辑部分。很久以前,为了创建超过99行的信息框,有必要使用嵌入;但是现在在 {{infobox}}
的单个实例中可以定义的行数没有限制。
第一小节 | |
标签 1.1 | 数据 1.1 |
---|---|
第二小节 | |
标签 2.1 | 数据 2.1 |
下方文本 |
{{Infobox
| title = 顶级标题
| data1 = {{Infobox | decat = yes | child = yes
| title = 第一小节
| label1= 标签 1.1
| data1 = 数据 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = 第二小节
| label1= 标签 2.1
| data1 = 数据 2.1
}}
| belowstyle =
| below = 下方文本
}}
注意,在上面的示例中,子信息框位于data
字段中,而不是header
字段中。请注意,如果未明确指定粗体,则章节副标题不是粗体。要获得加粗的部分标题,请将子信息框放在“标题”字段中(但不要放在“标签”字段中,因为它不会显示!),要么使用
第一小节 | |
---|---|
标签 1.1 | 数据 1.1 |
第二小节 | |
标签 2.1 | 数据 2.1 |
下方文本 |
{{Infobox
| title = 顶级标题
| header1 = {{Infobox | decat = yes | child = yes
| title = 第一小节
| label1= 标签 1.1
| data1 = 数据 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = 第二小节
| label1= 标签 2.1
| data1 = 数据 2.1
}}
| belowstyle =
| below = 下方文本
}}
or,
第一小节 | |
---|---|
标签 1.1 | 数据 1.1 |
第二小节 | |
标签 2.1 | 数据 2.1 |
下方文本 |
{{Infobox
| title = 顶级标题
| header1 = 第一小节
{{Infobox | decat = yes | child = yes
| label1 = 标签 1.1
| data1 = 数据 1.1
}}
| header2 = 第二小节
{{Infobox | decat = yes | child = yes
| label1 = 标签 2.1
| data1 = 数据 2.1
}}
| belowstyle =
| below = 下方文本
}}
请注意,省略|title=
参数,并且在嵌入的信息框之前不包含任何文本,可能会导致虚假的空白表行,从而在视觉呈现中产生间隙。可以使用|rowstyleN=display: none
来抑制垃圾输出,将N替换为数据/头编号。
Wikipedia:WikiProject Infoboxes/embed 包含一些指向Wikipedia文章的链接,其中包括嵌入在其他Infobox中的Infobox。
子信息框
另一种嵌入方法是使用|subbox=yes
,它从信息框中删除外部边界,但保留内部结构。这种方法的一个特点是,父框和子框不需要具有相同的结构,并且标签和数据字段不在父框和子框之间对齐,因为它们不在同一个父表中。
主 1 | |||||||
---|---|---|---|---|---|---|---|
主 2 | |||||||
| |||||||
| |||||||
标签 5 | 数据 5 | ||||||
主 6 |
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = 主 1
| header2 = 主 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = 分 3-1
| header2 = 分 3-2
| label3 = 标签 3-3 | data3 = 数据 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 =标签 4-1 | data1 = 数据 4-1
}}
| label5 = 标签 5 | data5 = 数据 5
| header6 = 主 6
}}
类似的嵌入技术也可以在其他一些模板生成表的内容参数中使用(例如Sidebar):
标题 1 | ||||||
---|---|---|---|---|---|---|
标题 2 | ||||||
|
||||||
|
||||||
标题 5 |
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = 标题 1
| heading2 = 标题 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = 分 3-1
| header2 = 分 3-2
| label3 = 标签 3-3 | data3 = 数据 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = 标签 4-1 | data1 = 数据 4-1
}}
| heading5 = 标题 5
}}
请注意,包含每个子框的父数据单元的默认填充仍然可见,因此子框比父框略窄,并且父框的标准单元之间的垂直间距高于不同子框的单元之间的垂直间距。
控制嵌入式无项目符号列表中的换行符
模板 {{nbsp}}
可与 {{wbr}}
和 {{nowrap}}
一起使用,以控制嵌入在信息框中的无符号列表中的换行符,以防止包装的长条目与多个条目混淆。
完整空白语法
(备注:本模板目前最多可以同时处理80行表格,一般的信息框模板只会用到前20行的参数,因此此处省略了后60行的参数。需使用时可依此类推。微格式“class”参数亦被省略,因其不常被用到,使用时请自行添加。)
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| templatestyles =
| child templatestyles =
| grandchild templatestyles =
| 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 =
| header11 =
| label11 =
| data11 =
| header12 =
| label12 =
| data12 =
| header13 =
| label13 =
| data13 =
| header14 =
| label14 =
| data14 =
| header15 =
| label15 =
| data15 =
| header16 =
| label16 =
| data16 =
| header17 =
| label17 =
| data17 =
| header18 =
| label18 =
| data18 =
| header19 =
| label19 =
| data19 =
| header20 =
| label20 =
| data20 =
| belowstyle =
| below =
}}
参看
上述文档嵌入自Template:Infobox/doc。 (编辑 | 历史) 编者可以在本模板的沙盒 (创建 | 镜像)和测试样例 (创建)页面进行实验。 请在/doc子页面中添加分类。本模板的子页面。 |