模板:Infobox

本頁使用了標題或全文手工轉換
勤求古訓,博采眾方
於 2022年5月2日 (一) 22:09 由 入我相思门留言 | 貢獻 所做的修訂 (创建页面,内容为“{{#invoke:Infobox|infobox}}<noinclude> {{documentation}} </noinclude>”)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
文件圖示 模板文件[檢視] [編輯] [歷史] [清除快取]

本模板為一系列信息框模板的元模板,亦即本模板用於構建其他模板。通常不建議在條目中直接使用此模板,但是如有需要,可以在個別「一次性」情況中直接使用。

用法

本模板與{{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網站亦能獲取更一般性的信息。


示例

{{Infobox
|name         = test infobox
|bodystyle    = 

|titlestyle   = 
|abovestyle   = background:#cfc;
|subheaderstyle =
|title        = 测试信息框
|above        = 上方文本
|subheader    = 图像上方子标题
|subheader2   = 第二个子标题

|imagestyle   = 
|captionstyle = 
|image        = [[File:王好古.png|200px]]
|caption      = 王好古

|headerstyle  = background:#ccf;
|labelstyle   = background:#ddf;
|datastyle    = 

|header1 = 独自定义的顶栏
|label1  = 
|data1   = 
|header2 = 
|label2  = 独自定义的标签
|data2   = 
|header3 =
|label3  = 
|data3   = 独自定义的数据
|header4 = 三项均有定义(顶栏)
|label4  = 三项均有定义(标签)——错误:因为有设顶栏而不会显示出来
|data4   = 三项均有定义(数据)——错误:因为有设顶栏而不会显示出来
|header5 =
|label5  = 标签和数据有定义(标签)
|data5   = 标签和数据有定义(数据)

|belowstyle = background:#ddf;
|below = 下方文本
}}
測試信息框
上方文本
圖像上方子標題
第二個子標題
王好古
獨自定義的頂欄
獨自定義的數據
三項均有定義(頂欄)
標籤和數據有定義(標籤)標籤和數據有定義(數據)
下方文本

注意到,當標籤脫離數據單元單獨定義時,所定義的那一行並未出現在信息框內;而當頂欄與標籤、數據定義在同一欄時,頂欄將會優先顯示。

在下面的例子中,定義了「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
分 3-1
分 3-2
標籤 3-3數據 3-3
標籤 4-1數據 4-1
標籤 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):

{{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          = 
}}

參看