Template:Infobox/doc: Difference between revisions
No edit summary |
(No difference)
|
Revision as of 15:55, 26 November 2008
File:Edit-copy green.svg | This is a documentation subpage for Template:Terminate sentence It may contain usage information, categories and other content that is not part of the original template page. |
File:Ambox warning yellow.svg | This template employs intricate features of template syntax.
You are encouraged to familiarise yourself with its setup and parser functions before editing the template. If your edit causes unexpected problems, please undo it quickly, as this template may appear on a large number of pages. Remember that you can conduct experiments, and should test all improvements, in either the general Template sandbox or your user space before changing anything here. |
This template is intended as a meta-template, that is, a template that's used when constructing other templates. It's not meant for use directly in an article. See Help:Infobox for information on how to craft infoboxes in general.
Usage
Usage is similar to {{navbox}}, but with an additional distinction. Each row on the table can either be a "header", or it can have a label/data pair, or it can just be a data cell. These are mutually exclusive states so if you define a row to be both a header and a label/data pair, the label/data pair is overridden.
See Wikipedia:WikiProject Microformats for more information on adding microformat information to Wikipedia, and microformats.org for more information on microformats in general.
Making fields optional
A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so:
|label5 = Population |data5 = {{{population|}}}
This way if an article doesn't define the population parameter in its infobox the row won't be displayed.
For more complex fields with pre-formated contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter mass has been supplied |then display it, followed by 'kg'":
|label6 = Mass |data6 = {{#if:{{{mass|}}} |{{{mass}}} kg}}
For more on #if, see here.
You can also make headers optional in a similar way. If you want a header to appear only if one or more of the data fields that fall under it are filled, one could use the following pattern as an example of how to do it:
{{Infobox |name = {{subst:PAGENAME}} |title = Example of an optional header |header1 = {{#if:{{{item_one|}}}{{{item_two|}}}{{{item_three|}}} |Optional header}} |label2 = Item one |data2 = {{{item_one|}}} |label3 = Item two |data3 = {{{item_two|}}} |label4 = Item three |data4 = {{{item_three|}}} }}
header1 will be shown if any of item_one, item_two, or item_three is defined. If none of the three parameters are defined the header won't be shown.
The trick to this is that the "if" returns false only if there is nothing whatsoever in the conditional section, so only if all three of item_one, item_two and item_three are undefined will the if statement fail.
Examples
File:Example.png | |
Header defined alone | |
---|---|
Data defined alone | |
All three defined (header) | |
Label and data defined (label) | Label and data defined (data) |
Below text | |
{{Infobox |name = Infobox/doc |title = |image = [[Image:example.png|200px]] |caption = Caption for example.png |headerstyle = background:#ccf; |labelstyle = background:#ddf; |header1 = Header defined alone |label1 = |data1 = |header2 = |label2 = Label defined alone |data2 = |header3 = |label3 = |data3 = Data defined alone |header4 = All three defined (header) |label4 = All three defined (label) |data4 = All three defined (data) |header5 = |label5 = Label and data defined (label) |data5 = Label and data defined (data) |belowstyle = background:#ddf; |below = Below text }}
Notice how when a label is defined without an accompanying data cell the row doesn't appear in the displayed infobox, and when a header is defined on the same row as a data cell the header takes precedence.
For this example, bodystyle = width:20em; and labelstyle = width:33%;
Label 1 | Data 1 |
---|---|
Label 2 | Data 2 |
Label 3 | Data 3 |
Header 4 | |
Label 5 | Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |
Below text | |
Full blank syntax
(Note: the template currently handles up to 80 rows; only 20 are included here since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.)
{{Infobox |name = {{subst:PAGENAME}} |bodystyle = |title = |titlestyle = |above = |abovestyle = |image = |imagestyle = |caption = |captionstyle = |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 = }}
See also