Wookieepedia Help:Contents

This article is meant to clarify basic template use. This is NOT a tutorial for actually writing templates. Those seeking information about designing templates will find links to relevant information in the External links section.

What are templates?

Templates are segments of wiki markup that are stored in one central location (the Template namespace) so that they can be used repeatedly. They are made up of Wikitext, HTML, and CSS markup just like every other page on Wookieepedia.

Template calls

Templates are added to a page through the use of template calls. When a template call is inserted into a page, it tells the MediaWiki software to dynamically transclude (insert) the relevant template into the source code of that page every time that the server sends it to be viewed in a browser.

Syntax

{{template name|parameter1|parameter2|…}}

A template call consists of the template's name followed by any included parameters. The parameters are delimited by a pipe ("|") symbol and the entire template invocation is then surrounded by double curly brackets ("{{…}}").

Example

"{{{1}}}"
―{{{2}}}

[1]

Wiki markup

{{quote}}

The template call above invokes the Quote template.

Notes

  1. Inclusion of the template namespace in the template call is optional and the first letter of the template's title is not case sensitive. The output of {{Template:Quote}} is the same as {{quote}}.
  2. Any wiki page can be used as a template and dynamically inserted into another page by using the syntax: {{namespace:page name}}. Pages in the main namespace use the unique syntax: {{:page name}}.
  3. The template looks strange in the example above because the quote template was constructed to expect the user to assign values to its unnamed variables through the use of template call parameters. We will discuss how to do that next.

Variables

Many templates can be customized, to some degree, by adding parameters to the template call. Template parameters are used to assign values to variables that have been built into the template's code. Template variables come in two distinct flavors: named and unnamed.

Important note:
Template variables should not be confused with predefined MediaWiki variables. [2]

Unnamed variables

Writing a template call for a template that makes use of unnamed variables can be tricky because it requires the editor to know quite a lot about the internal workings of the template that they intend to use. Within the template's source code, unnamed variables are referenced using numbers rather than names. Their number corresponds to their position in the parameter list of the template call. You can assign values to unnamed variables in one of two ways:

{{template name|variable 1 value|variable 2 value|…}}
{{template name|1=variable 1 value|2=variable 2 value|…}}

Example

"Hello world!"
―anonymous
Wiki markup
{{quote|Hello world!|anonymous}}
{{quote|1=Hello world!|2=anonymous}}
{{quote|2=anonymous|1=Hello world!}}

Notes

All of the template calls above assign values to the first and second unnamed variables contained in the quote template. Note that in the third template call, the variable assignments are reversed.

Using the syntax presented in the second and third code examples, you can list parameters in whatever order you wish, BUT parameter order is vitally important when using the syntax that is presented in the first code example. If the parameters are listed out of order, in that case, the template will likely be broken or become seriously distorted (but happily the Quote template handles the abuse gracefully):

{{quote|anonymous|Hello world!}}

Is the equivalent of:

{{quote|1=anonymous|2=Hello world!}}

They both produce this nonsensical statement:

"anonymous"
―Hello world!

If you use the second method of unnamed variable assignment, the template call behavior is exactly the same as that for named variables which we will discuss next.

Named variables

Named variables can only be assigned a value by adding the variable's name to the parameter list of the template call and explicitly assigning it a value through the use of an equals ("=") operator.

Notes

  1. It does not matter what order you list named parameters in.
  2. If we substituted {{Jedi Civil War|black}}, the superfluous parameter would be ignored and the template would appear as normal.
  3. If a single variable is assigned a value twice within a template call, the second value assignment (right to left) will supersede the first.
    Thus {{Jedi Civil War|c1=black|c1=white}} produces a background color of 'white', not 'black'.

Common mistakes

Confusing template calls with wiki tables

Many new editors confuse template calls with wiki tables. It is important to understand that the two constructs are in no way connected even though they use a similar syntax. Wiki tables are merely a simplification of HTML tables which are used to provide structure for content.

Wiki table sytax

{|
|+ table caption
|-
! table heading
|-
| table cell
|-
| table cell (next row)
| table cell (same row)
|}

Whitespace

Wiki markup does not always ignore whitespace. Therefore, it is important to keep your source code as condensed as possible. The MediaWiki software generally does not respect whitespace unless the user adds excess carriage returns, but implementation is uneven.

Template calls that involve named variables can be written in numerous ways without any adverse effects:

{{Hyperspace|url=fiction/f20080423/index.html|text=Precipice|int=Precipice}}

Can also be written as:

{{Hyperspace
|url=fiction/f20080423/index.html
|text=Precipice
|int=Precipice
}}

And the output will not be affected:

HyperspaceIcon Precipice on Hyperspace (article) (content obsolete and backup link not available)


But when dealing with unnamed variables, one must use more caution. For instance:

{{quote|Hello world!|anonymous}}

Rewritten as:

{{quote
|Hello world!
|anonymous
}}

Produces this mess:

"Hello world!

"

―anonymous

If you simply must structure your template calls that way, you can rewrite it like this:

{{quote
|1=Hello world!
|2=anonymous
}}

And it works just fine:

"Hello world!"
―anonymous

Incorrect template calls

It is best not to include extra pipe ("|") symbols in template calls. Usually they are harmless, but if the template you are calling has one or more unnamed variables, you will inadvertently be assigning it a value of "" (ie. NOTHING), which can break the template.

Examples

{{|
template name
|variable name=value
|}}

The example above is a common result of confusing template calls with wiki tables.

{{template name|
|variable name=value|
}}

Only one pipe symbol should delimit template call parameters.

Correct template calls

Templates calls can be written in any of the following ways. The preferred structuring varies from wiki to wiki.

{{template name
|variable name=value
}}

{{template name|
variable name=value
}}

{{template name|
variable name=value}}

{{template name
|variable name=value}}

{{template name|variable name=value}}

Template modifiers

Special modifiers can be added to a template call in order to change the way that the MediaWiki software handles it. Modifiers are added to a template call using the following syntax:

{{modifier:Template name}}
Usage Explanation
{{int:xyz}} Shorthand for {{MediaWiki:xyz}}, it is rendered as ⧼xyz⧽ if the page MediaWiki:xyz does not exist.
{{msg:xyz}} The "msg" modifier forces the use of {{Template:xyz}} unless the template doesn't exist. It is useful in the rare case that a template and a MediaWiki predefined variable are both named "xyz". Normally, MediaWiki variables have priority when there is a conflict.
{{msgnw:xyz}} The unevaluated wikitext is rendered. See Help:Template#msgnw.
{{raw:xyz}} Equivalent to {{msg:xyz}} above.
{{subst:xyz}} In the wikitext, the tag is substituted by the content (single-level evaluation only), see Help:Substitution.

The most commonly used modifier is "subst" which substitutes the raw source code generated by the template call for the template call itself, once the page is saved. It should be noted that it is possible to preview what the generated code will look like by using the the diff ("Show changes") preview page.

Substitution should be used sparingly as it introduces ugly and often confusing code into a wiki page. Perhaps more importantly, once substituted, the generated wikitext ceases to be a template and therefore it can no longer be immediately updated when its source template is changed.

However, substitution does have some advantages. Substituted code places less strain upon the server and allows a page to load slightly faster. In addition, some templates may not function properly unless they are substituted.

Footnotes

  1. Within the source code of a template, variables are surrounded with three curly brackets ("{{{variable}}}"). If they are not assigned a value through the use of template call parameters, displayed variables will appear just as they are defined. For instance, the Quote template displays its first two unnamed variables, {{{1}}} and {{{2}}}, if it is invoked without parameters.
    Such behavior can be overridden by tweaking the template involved using default parameters and/or ParserFunctions, but such topics are beyond the limited scope of this help page.
  2. MediaWiki variables, sometimes called "Magic words" or "predefined templates", are special wiki objects that are referenced using the same syntax as templates. Calling them variables at all could be considered something of a misnomer as their value cannot be changed. In fact, it is more proper to call them functions (ie. Parser functions) which are exclusively used to retrieve information from the server.

See also

External links

Wikimedia Meta-Wiki

Mediawiki

Misc.