Help:Infoboxes

Infoboxes are like fact sheets or sidebars in magazine articles; they're designed to present a summary of the topic of the page. They present important points in an organized and quickly readable format. Infoboxes are generally made using templates, to create consistency across a community.



Fandom has developed a consistent way to code infoboxes, called Portable Infoboxes, to enable them to display well across different devices, which this page details. There are no changes to how you use an infobox on an article — instead, the changes affect how it is written on a template page. Fandom considers use of Portable Infoboxes to be standard for their communities, and safe and stable for common practical use.


 * Useful links
 * For a basic intro to the visual infobox editor, see Help:Infoboxes/editing
 * For a detailed list of all the standard options available for Portable Infoboxes, including samples of wikitext to use and their HTML output, see Help:Infoboxes/Tags
 * For detailed information about how to use CSS to theme an infobox, including detailed guides, see Help:Infoboxes/CSS
 * For step-by-step instructions on how to migrate from a 'classic' infobox to a portable infobox, see Help:Infobox migration
 * Portability Hub: Guides, examples, and personal mentoring for migrating, customizing, and theming your infoboxes

How to add an infobox to an article
You can add an infobox to an article the same way as you would any other template, either via the editor's built-in tools, or through the editor's source mode. In the VisualEditor, Portable Infoboxes can quickly be inserted via the Infobox option on the 'Insert' dropdown.

Meanwhile, in source mode, you would generally start by copying the syntax from the template's documentation (normally found towards the bottom of the template's page) and pasting it into an article, changing the words after the equals signs to provide the desired information. For example:

With Portable Infoboxes, this works similar as with any other template. The template page markup is a little different, as detailed below.

How to create an infobox
First, start a new template with any name you like. To do this, create a new page with the title "Template:[name of your choice]" (e.g., Template:Example). While in the past you may have used tables and divs, we now use  tags. We'll begin with a basic 'stacked' infobox, with a title and an image:

This wikitext will tell your template to use name and image variables for title and image elements. Additionally, you can provide the  tag, whose value will be used when a user does not specify a name/image/etc. on the article.

Now we just need two more fields containing additional information, so let's add one:

After adding one last field with source set to parameter-2 and label to Label 2, we end up with the following:

We can now use the template in an article, inserting the following parameters to get a working infobox:

Hiding values
Any field or element without a value will automatically be hidden. This applies to all tags with the exception of groups that are forcibly shown (see ) and those fields with a  tag. When all elements are empty the infobox itself will not appear. Inside an  tag, images that do not exist will not show a "redlink", but the file page will appear in Special:WantedFiles.

How to alter the infobox layout
Infoboxes using this kind of code are automatically styled, taking cues from your community's custom theme. If any of the variables are empty, the relevant row of the template will not be displayed (unless the  tag has been used).

Layout options
Two alternative layout options are available for infoboxes:

Custom theming
There are a few different ways to customize the look of your infoboxes. It is recommended that you don't mix these too much as it will become confusing to others trying to understand how the styles are being applied.
 * 1) The default infobox color scheme depends on the color choices made in Theme Designer; the overall background color will be the same as the "Article background color", the title and headers will have the "Accent color" for a background, and the border will be a semi-opaque version of the accent color. (There are other dependencies, but they are beyond the scope of this help page. See the FandomDesktop conversion guide for details.)
 * 2) Complete control of the theme for infoboxes will require modifying the local community CSS. The   class can be used to target all infoboxes on the wiki, and using the type, theme, or theme-source attributes on an infobox tag will add classes that make it easy to theme-specific infobox templates. (For lots more information about how to use these attributes and theme an infobox, including detailed guides, please check out Help:Infoboxes/CSS, or find example styles and themes on the Portability Hub.)
 * 3) * The type attribute is used to define an infobox's logical type (like "character" or "item"). All infoboxes of the same type will get the same CSS class.
 * 4) * The theme attribute is used group infoboxes by a theme (like "season 1" or "Halloween"). All infoboxes of the same theme will get the same CSS class.
 * 5) * The theme-source attribute allows you to change the infobox theme based on a template parameter. Say you had creatures that were borne from the ancient Greek elements. The theme of the infobox can be changed based on whether the user sets the parameter element to Air, Earth, Fire, or Water, for example.
 * 6) The text and background colors of the headers can be set for each instance of an infobox using the method described in Accent colors below. This method produces in-line CSS that overrides all other methods but is limited to just the title and headers.

Accent colors
The colors of title and header backgrounds and text can be further repainted per-infobox by using the accent color feature. Like theme-source, the color used is the value of the template parameter indicated in accent-color-source (for backgrounds) and accent-color-text-source (for text).

As an example: if the infobox template declares accent-color-source="bkg" and the article's infobox declares bkg = #FFF, the background color of the headers and titles will be #FFF (the HEX value for the color white). The colors declared in this way must be in #FFF or #FFFFFF HEX format, or the recoloring will silently fail.

Accent colors will override colors declared using themes as well as defaults.

Default colors may also be specified in case the user does not set the bkg parameter to a value in the example above. Using accent-color-default="#FFF" sets the color for all titles and headers backgrounds, and accent-color-text-default="#000000" works in a similar manner by setting the default text color to black.

Per-item styling
Individual items in an infobox may include markers inside the HTML results that allow them to be indicated with CSS selectors known as data attributes.


 * All Portable Infobox elements that have an input of source will now render in HTML with that parameter name in a data-attribute, such as data-source="ATK" . This will allow you to write CSS or jQuery selectors such as .pi-item[data-source=ATK] to style and identify individual items. Used in combination with type, this should eliminate the need for nth-of-type style selection and opens up other possibilities for design and interactivity.
 * The new name attribute allows explicit selection of elements whether they accept a source input or not, including identification of, , tag to the image parameter.

For more information about this feature, see this thread.

To add a video into an infobox, simply use the  tag, just as you would with an image. When a video is inserted instead of an image, a thumbnail with a play icon and duration info will be shown in the infobox, and clicking on the video will pop up a video player. If you want to add multiple videos, add a new  tag per each video.

How to group data
Now that you have created a simple infobox, you can learn how to use more advanced options. In the section below we show how to build the infobox seen on the right.

This infobox begins with three  fields, then single   and   fields. As you can see, the  field does not have to be the first field.

Grouping information inside the group tags
The  tag will let you group fields together and give them a header. Remember: fields that are declared but don't have a value won't appear. This rule also applies to groups. If none of the fields (other than the  tag) inside a group have a value, that whole group won't show up.

Header 1

Horizontal layout for groups
Instead of a vertical list, grouped fields can have a horizontal layout where all the content is displayed next to each other in single line. This can be achieved by adding layout="horizontal" attribute to the  tag.

Smart layout for groups
Similar to horizontal layout (which provides rigid, structured rows) is "smart" layout. This allows data fields in a single group to flow from one row to the next. When the number of fields reaches a defined limit, the next data field will appear on a new row. The items in a row will adjust to fill all available width.

To use smart groups, add row-items="3" (or some other number that sets the limit). All items in a smart group use horizontal layout by default, so it is not necessary to add that attribute if you are using smart groups. However, it is possible to mix horizontal and vertical data fields in a smart group by adding the layout="default" attribute to an individual  tag to switch it back to vertical format.

To make a given data field take up more than a single space, use the span="2" attribute in a  tag, similar to the way the colspan attribute works on HTML table columns.

Force all group elements to be displayed
Setting the attribute show="incomplete", you can force all group elements to be displayed, even when empty, unless all are empty — then the group is not rendered at all.

Now adding all this together, we come to the final template code:

 Header 2  Header 3

Now we can use it in an article:

Collapsible groups
Groups can be made collapsible by adding either collapse="open" or collapse="closed" to the  tag. This will make the group header row clickable (to expand and collapse the group), and the group will initially start open or closed, respectively.

Note: A  tag containing content must be the first element inside the   tag for this to work.

Panels
Data items and groups can now be structured in tabbed panels, which allow more flexibility and smarter data display on desktop and mobile views. Each  — as a child of the root   element — can be divided with one or more   elements (and   tags) to make a tab set. Any element that could otherwise be a child of  can be a child of   (except another panel - nested panels are not supported). This should reduce clutter and the necessity for groups of infoboxes on pages while structuring infoboxes in more dynamic ways.

The changeable area is formed from two tags: the  tag represents the contents of a tab. Inside it, the  tag indicates what text to put on the clickable toggle. Labels default to their zero-based index if omitted; but if all tabs within a panel are unlabeled, then they are contained in the infobox as if they were groups.

Panel 2 Header

Formatting
If you want to append some additional information to your data – like adding some icons, categories – or to process the passed values, the field formatting allows you to do that.


 * When the  tag is used, the variable provided in the source attribute of the   tag can be processed or modified by wikitext. For this purpose, the value of the parameter is accessed by surrounding it with triple braces; e.g.,   for , just like in other templates.
 * If the variable provided in source= is empty, the field is not rendered unless a value is provided in the  tag.

A few sample use cases:
 * Adding extra text:
 * Providing a default value:
 * Linking to a page:
 * Linking to a category:
 * Categorizing a page:

For example, we can insert a  template:

The effect shown to the right can be achieved with the following syntax:

Parser functions
Parser functions can be added to any infobox. However, the results will be automatically hidden if the parameter, tag, or data source do not contain any text.

It would not make sense to test for the empty string in the switch statement; e.g.,, because that is already covered by the   tag.

Accessing template parameters from other data tags can be done by just writing. Because the data tag doesn't contain a, the row will be hidden, unless you put your parser function in the default tag. In the example below, the row will be hidden, if the "start" template parameter is not defined.

Examples

 * Kratos ( source )
 * Beatrix Kiddo ( source )
 * Battle of Arrakeen ( source )
 * Connie Beauchamp ( source )

Further help and feedback

 * For information on the 'classic' method of writing infoboxes, see Help:Classic infoboxes
 * For more infobox help, see the Portability Wiki, which also covers the InfoboxBuilder extension

de:Hilfe:Infoboxen es:Ayuda:Infoboxes fi:Ohje:Tietolaatikot fr:Aide:Infoboxes hi:सहायता:इन्फोबॉक्स id:Bantuan:Kotak Info it:Aiuto:Infobox ko:도움말:정보상자 ja:ヘルプ:インフォボックス nl:Help:Infoboxen pl:Pomoc:Infoboksy pt:Ajuda:Infoboxes ru:Справка:Инфобоксы tr:Yardım:Bilgi kutuları uk:Довідка:Інфобокси vi:Trợ giúp:Hộp thông tin zh:Help:資訊框