Help:Template

''This page is meant to be a quick how-to with helpful tips for creating and editing templates in Wowpedia. It is not meant as a definitive tech reference. MediaWiki's own page has that already.''

"Template:" vs Local Templates
You may already have seen that some pages use  while others use. This usually means the same thing; if you don't tell the wiki in which namespace to look, it will look under "Template:".

Wait, what did I just say?

For site-wide templates, it makes sense to put them in the "Template:" namespace where everyone can find them, but for something that you're only using in a few pages, it makes much more sense to just put it in e.g., and pull it in with.
 * A template does not have to live under "Template:". You can pull in a page from wherever into your page.


 * Note the ":" at the beginning of .   Since most pages live in the "main" namespace of the wiki, we'd not be telling the wiki where to look for the page to include, so it'd go look in "Template:", where it wouldn't find much.   ":" by itself means "Look in the main namespace, please".

You will have to use your own judgement for what's right for your template. Here's a few instructive examples though:

Templates that belong in "Template:"

 * Admin templates: Delete, Vote, Cleanup, ...
 * General wiki helpers: clr, Infoline, tocright, ...
 * General-purpose WoW templates: cost, Alliance Icon, ...

Naming your template
This depends on where your template gets placed, really. And how commonly used you think it's going to be.


 * In "Template:", a very commonly used template will likely be a single word, or two contracted words, all in lowercase. This makes it fast and easy to write. Examples include: clr, infoline, ... For instance, "WoW API" should probably have been named simply "wowapi" -- much easier to write often.


 * "Template:" templates that are more seldomly used will need a more descriptive name. But its name will still be fairly short.


 * A locally stored template will typically be a subpage of something else, e.g. "My Page/My Template". Other than that, it can have just about any name.
 * If it needs to be long winded and descriptive, make it so: (but you'll still go nuts if you need to include it in more than a handful of pages).
 * Or be more brief; as long as you think people understand what the template is about when they stumble over it.

Explaining what your template does
It's very helpful to others (or, heck, yourself half a year from now!) to explain what your template actually does and why it exists. It's easy to put this information in the template without it pestering pages where it's included:

This template does X and is used by Y. I made it a template because Z. --~ (and then the actual template...)

... where "X" and "Z" certainly can be left out if it's obvious, and "Y" might be "globally" or "all pages dealing with ...". It doesn't even have to follow any particular format, really; just a quick note about the template helps!

This becomes even more important when your template uses parameters. Other people really appreciate it when you explain what order to input things.

Templates have Talk pages too!
If there's more you'd like to say about your template than you care to explain between &lt;noinclude&gt; tags, templates do have talk pages just like any other page! It might be a good idea to mention that there's info in the talk page between your tags though; most people don't go looking for talks on templates. ;-)

Categories in templates
If you put a category in a template, all pages that use the template will suddenly end up in that category. Well, semi-suddenly anyway; the page needs to be edited once (just add a blank line or a space) before they're actually moved.

However, if you just go ahead and put in the category tag, your template will end up in the category too, which is maybe not what you intended. Use this:

Template parameters
This is actually a fairly huge topic; we'll try to cut it short.

You can also name parameters:

You can also give default values for things that aren't supplied:

Equal signs in parameter values
Since equal signs, "=", are part of how parameter values are supplied, they're a little bit troublesome. You can't supply equal signs to numbered parameters at all. However, you can supply them to named parameters:

This will probably not work like you intended. You're setting the parameter "Haha" to ")". Not "1" to "Haha =)".

This example sets the parameter "text" to "Haha =)".

Templates can use templates!
When your templates are getting big, chances are you want to re-use something from one template in another template.


 * Just cut the common parts out and paste them into a new template and then use that template in other templates!

There's also other reasons why you may want to use sub-templates. See e.g. Delete and Delete/Content. Pulling in "Delete" automatically marks the page for deletion, but Wowpedia:Delete also wants to show what it looks like without getting itself marked for deletion, so it just pulls in "Delete/Content".

Splitting templates into a /Begin and /End

 * For an example of split templates, see Example/Begin and Example/End.
 * Of course, Example pulls them both in for places where you don't need the extra oomph.

Template parameters can't contain just anything. They're pretty aggressive about HTML tags, and trying to insert  or   or   is bordering on painful. So for templates where you know you'll have lots of content, or quirky content, it makes more sense to split them up into a "Begin" and "End" template, e.g..


 * Note: You cannot begin a HTML tag in one template and end it in another. The MediaWiki software refuses to leave HTML tags unfinished in a page, so it helpfully ends them for you right at the end of the "Begin" snippet, long before they're of any use to you.


 * Wiki-style tables, on the other hand, can be begun in one template and ended in another.

Categorize your templates!
It helps other editors (and probably yourself, too!) if you categorize your templates themselves. Perhaps not so much for "Template:" templates, but definitely for local templates!

Pages that use a local template will likely share one or more common categories, so making a "Your Category/Templates" and putting the templates there helps other editors find them easily!


 * Make sure that pages using your template don't end up in the "/Templates" category!

 ''This template does X and is used by Y. See the talk page! -- ~        (and then the actual template...)''

Automatic subtemplate selection
There is a number of built-in variables that are very useful for templates.

One such is, which for this page is "". So all base zone pages could for instance use a template that pulls in ":/Boss list", and links to "/Loot list". But attempting to use that template inside one of the subpages would break horribly.

Pages with lots of templates not updating
When a page pulls in lots of templates, it won't always update when a template changes. There are two ways to force a refresh:
 * Do a dummy edit on the page
 * Do "action=purge" on the page, e.g.
 * The your text template creates such a link in the page itself.


 * This problem should be alleviated as of the MediaWiki 1.7 upgrade (which happened in September 2006). The wiki software will attempt to update many of the pages using the template immediately, but if there's too many to do immediately, it'll spread the work over the next few minutes.

Is anything on this page unclear? Or is there something you'd like to know more about? - Drop a line in the Talk page!