See also: http://en.wikipedia.org/wiki/Help:Template
Parameters Edit
A parameter, or argument, is information that the template needs to complete its job. If a parameter is required, you must include it, if it is optional you can omit it if it doesn't apply. For example if someone gives you a to do list, the purpose of the list is clear, you are supposed to do the items on the list. But for any given list, the items will differ. A template that requires parameters is the same idea. Parameters are separated with single pipes ( | ). If you need to include a pipe as part of a parameter use {{!}}. Here's an example of formatting a to do list with three items using the fictional ToDoList template:
{{ToDoList|Buy milk.|Return videos.|Wash car.}}
How the list is formatted will depend on exactly how the actual template is setup, but here is one possibility:
To Do List
- Buy milk.
- Return videos.
- Wash car.
Named Variables Edit
Unlike the ToDo list above where all the parameters are things to do, most templates that use parameters give each one an explicit name. This is needed when the parameters are formatted differently or put in particular locations.
An example would be a business card template. The phone number, address, name, etc all go in particular locations and so the template needs to know which parameter is the name, which is the address, etc.
For example:
{{Business Card | Name = Martine Strathelar | Address = 100 Planar Drive, Dereth | Business = Temporal Translocations | Phone Number = (555)555-1212 }}
which using the hypothetical Business Card template might be displayed as:
Martine Strathelar
Temporal Translocations
100 Planar Drive, Dereth - (555)555-1212
Whitespace Edit
Whitespace (including newlines, tabs and spaces) is stripped from the beginning and end of all parameters. If this is not desirable, adding any non-whitespace characters (including the HTML encoding for a whitespace character, or invisible Unicode characters such as the zero-width space or direction marks) will prevent further stripping:
{{#ifeq: foo | foo | equal | not equal }}
- → equal
{{#ifeq:  foo  |  foo  | equal | not equal }}
- → not equal
Judicious use of whitespace can make templates more readable, quicker to fill out, and easier to debug when unexpected behavior occurs. Compare the two uses below that would have identical results.
{{Template | Parameter One = One | Parameter Two = Two | Parameter Three = Three | Parameter Four = Four }} {{Template|Parameter One=One|Parameter Two=Two|Parameter Three=Three|Parameter Four=Four}}
Strip/Trim Edit
Some complicated templates can experience problems with how white space is used when invoking the template (where you would get different results using {{template | variable }} vs. {{template|variable}} even though technically they should be the same. Use the {{Strip}} function around the variable in the template for consistent results.
Advanced Template Syntax Edit
To use templates you won't need to know any of the following, however in order to edit an existing template or to create a new template you may find this information useful. Additional info can be found at Help:Template and Help:Advanced templates (Wikipedia, so the information may not always apply exactly to this installation of Wikimedia software). You cannot preview changes to a template, so to avoid having broken templates for other users, test changes or new templates in the Template:Sandbox. (Don't forget to change your template's name to {{Sandbox}} to see the effects in the Sandbox.) Once it is working how you expect it to, transfer the code to the actual template page and revert the Sandbox.
Syntax Edit
- <includeonly></includeonly> - Optional tags you can place around the workhorse code that defines what the template does. It will cause the code to not display on the template page, improving the appearance of the page since most variables will be undefined. Also it will not compete with an example in situations where only one of an item can be displayed, such as a table of contents.
- <noinclude></noinclude> - Anything between these tags will be processed and displayed only when the page is being viewed directly; it will not be included or substituted in normal usage when the template is being referenced.
- {{{1}}} - The first unnamed variable (parameter) from the template invocation. That is, on another page where {{Related|Weapons|Armor|Loot}} is used, Weapons would be the first unnamed variable. Increment the number for successive variables, for example {{{3}}} would reference the third unnamed variable (Loot). Where this term ({{{1}}}) is used in your template, the variable's value will be inserted. So if [[{{{1}}}]] is in your template, it will be show up as Loot on the page where you used the template.
- {{{1|}}} - You can declare a default value for any variable by inserting a pipe and a default value. If the variable is undefined the default value will be given instead. For example, if the template uses {{{1|''No Link''}}} then if no value was passed, it will be assigned "No Link."
- {{{Variable}}} - A named variable has an explicit name assigned with the equals sign when using the template. For example, on the page using the template you could have {{Business Card|Name=John Doe}}. This would mean that for the template "Business Card" the named variable "Name" has a value of "John Doe" and when using this on the actual template page you would use {{{Name}}} to reference this variable's value (John Doe).
- {{{Variable|}}} - As described above for {{{1|}}} you can also set a default value for named variables. This can be useful for templates where you will usually use a standard value but want to retain the option of specifying a value. When using the default, just leave out the variable. For example, {{{align|center}}}. This would still let you set align=right or align=left when using the template, but if you don't use align at all, it will be center. Keep in mind if align is left blank (align = ) then the default will not be used because the value is an empty string. In other words there are three possibilities, in the example below align has a value of "top," margin has an empty value, and style is absent and would use the default value if one is given for the style variable:
{{Template | align = top | margin = }}
- One way around this that would handle both situations (completely absent and just a blank value) would be to use
{{#ifeq:{{{align|}}}||<value if absent or blank>|<value if present and nonblank>}}
. This comparison sets an empty string as the default, so if it is either not present or blank it will lead give the same result.
- -
Parser and Variable Functions Edit
- {{AUTOINRCEMENT}} - A variable that increments by 1 each time used, see Help:Autoincrement.
- #if: - {{#if: test string | value if true | value if false}}
- #ifeq: - {{#ifeq: string 1 | string 2 | value if true | value if false}} - Compares string 1 with string 2 to see if they are equal.
- #ifexist: - {{#ifexist: page title | value if exists | value if doesn't exist }}, can be used for articles or files (images).
- #expr: - {{#expr: expression }} - Mathematical operations. Details
- {{PAGESINCATEGORY}} - {{PAGESINCATEGORY:Page Name}} - Returns the number of pages in a category. Use {{PAGESINCATEGORY:Page Name|R}} for a number without commas.
- #switch: - {{#switch:comparison string | case=result | case=result | default result }} - This function compares one input value against several test cases, returning an associated string if a match is found. Details
- #titleparts: - {{#titleparts: pagename | number of segments to return | first segment to return }} - This function separates a pagetitle into segments based on slashes, then returns one or more of those segments as output. Details
- #vardefine - {{#vardefine: variablename | value }} - assigns variable, see Help:Variables.
- #vardefineecho - {{#vardefineecho: variablename | value }} - assigns and prints variable, see Help:Variables.
- #var - {{#var: variablename }} - prints current value, see Help:Variables.
Request a Template Edit
If you would like a template made but aren't sure how to go about adding one, Tlosk or Arkalor can probably help you.