Scratchpad

If you are new to Scratchpad, and want full access as a Scratchpad editor, create an account!
If you already have an account, log in and have fun!!

READ MORE

Scratchpad
Register
Advertisement
Shortcuts:

This help page is about documenting templates. General template help can be found at Help:Template.

There are several ways to document what a template is supposed to do:

  1. In some cases it is obvious on the template page itself without special provisions.
  2. It can be explained in <noinclude>text</noinclude> tags.
    This method allows for such things as adding the template to a template category.
  3. Detailed documentation can be put on the template talk page.
    This method is typically mixed with the noinclude-strategy on the template page, with a reference to the talk page, and perhaps a summary.

On the template page

The include-part of the template page defines the way it works when transcluded or substituted, while the non-includeonly parts produce the page itself.

A typical template page could contain:

<includeonly><!--template name-->definition content, possibly a tag for a category of pages that include the template</includeonly><noinclude><nowiki>definition content, possibly formatted, annotated, summarized</nowiki>explanation, examples, and tags for template categories (using the sortkey {{PAGENAME}})</noinclude>

The template name within comment tags can be useful in the case of substitution.

For example, for m:Template:t (backlinks, edit):

<includeonly>start-{{{1|pqr}}}-end</includeonly><noinclude><nowiki>start-{{{1|pqr}}}-end</nowiki>[[Category:Demo template]]</noinclude>

This renders as:

start-{{{1|pqr}}}-end

while without tags part of the information about the content would not be displayed:

start-pqr-end

Alternatively the part of the definition content which is rendered without loss of information (in particular plain text) is not put in either type of tags, so that it does not have to be duplicated:

start-<includeonly>{{{1|pqr}}}</includeonly><noinclude><nowiki>{{{1|pqr}}}</nowiki>[[Category:Demo template]]</noinclude>-end

again rendered as:

start-{{{1|pqr}}}-end

Applying substitution without parameter produces this as wikitext. It can be displayed by subsequently putting nowiki tags around it.

Table

If a template produces a table it is useful if the template page shows the table structure instead of the wikitext to make it. For that purpose the table syntax is not put in either type of tags, and the table elements, where needed, each have a noinclude and an includeonly part.

Rendering

As shown above, in straightforward rendering of definition content, information is lost in the case of a parameter with a default value: only that value is rendered. Other cases where information is lost include:

  • #expr applied to an expression with a parameter gives "Expression error: unrecognised punctuation character "{"".
  • a variable is rendered as its value.

The parameter default mechanism can also be used to document what a parameter typically does:

  • An undefined {{{1}}} is rendered as {{{1}}}, clearly indicating that the template expects to get a first parameter.
  • An undefined {{{1|}}} displays nothing, that's probably the desired effect, but not helpful for a self-documenting template.
  • Maybe it's possible to indicate the function of an expected parameter, e.g. {{{1|image}}} for templates doing something with images.

Typically, examples in the noinclude-part include or substitute the template. Note that changes in the working of the template (i.e. changes outside the noinclude-part) are not yet effective in these examples in preview and, in the case of substitution, in "show changes".

Category

Some templates are designed to add pages to a given category. Sometimes it's good enough if the template page itself is also shown in that category. Generally that's not the case. Templates adding pages to a category then use:

...end of code<includeonly>[[Category:target]]
</includeonly><noinclude>
documentation and/or link to talk page
[[Category:tempcat|{{PAGENAME}}]]
</noinclude>

Here target means a category for pages using the template, and tempcat is a category for similar templates. This method could be also used for interlanguage links in a template.

A small improvement seen on some templates replaces [[Category:target]] by {{{category|[[Category:target]]}}}. Normally the dummy parameter {{{category}}} is undefined (unused), and then the template adds pages to category target as before. Setting category= (empty value) allows to disable this feature on lists of templates. Otherwise template lists with examples would be added to the various target categories of templates explained by example.

Examples

Expansion demo templates can be used for live examples.

If a template contains a variable it can be useful if it has been written such that the value of the variable can be overridden by a parameter value, to demonstrate the effect of various values, using e.g.:

  • {{{namespace|{{NAMESPACE}}}}}
  • {{{pagename|{{PAGENAME}}}}}
  • {{{currentdow|{{CURRENTDOW}}}}}

This applies especially in the case of branching depending on the value of the variable.

References

Wikimedia-logo-meta This page uses content from the WikiMedia Meta-Wiki. The original article was at Help:Template documentation.
The list of authors can be seen in the page history.
As with Scratchpad, the text of the WikiMedia Meta-Wiki is available under the Creative Commons Licence.


See also

Advertisement