CorporisPublica:Template namespace

CorporisPublica:Template messages (Changes) contains an index of the most commonly used templates.

CorporisPublica:Navigation templates (Changes) contains a partial list of various subject-class navigational elements.

Introduction
Templates often look like text boxes with a different background color from that of normal text. They are in the template namespace, i.e. they are defined in pages with "Template:" in front of the name.

For example, consider the template Template:Disambiguation (follow the link to see the page where it can be edited). To insert the template's content into an article, type  in the wiki page ("  " is called a template tag). Every article with that tag in it will display the following text:

This technique is commonly known as transclusion. Templates can also include calculated and substituted elements, as well as parameters, allowing for complex usage. For a table of some useful templates, see CorporisPublica:Template messages. For detailed templating documentation see m:Help:Template.

Usage
Names can be made up of more than one word, e.g. . The first character (only) is not case-sensitive, so  and  are the same template, but  and  are not.

Templates can also accept template parameters which are then inserted into the output of the template.

Templates used in pages from the article namespace provide information to help readers. These can include navigation aids, or warnings that content is sub-standard. Templates that provide information only of service to editors belong on an article's talk page.

With the template namespace it is possible to include the contents of a page in that namespace within a page in a different namespace, using double curly braces around the template title (for example, would import Template:Title). This is used to:
 * place recurring messages (such as those to denote stubs, disambiguation pages, etc.) into articles in a consistent manner;
 * insert boilerplate messages for various issues like copyright violation, neutrality disputes, etc., using a simple shortcut command; and
 * create navigation templates and sidebars to link series of related articles together.
 * create infoboxes
 * provide cross-language portability of texts which are largely internationally the same, but contain some standard terms different in each language; the standard terms are replaced by referring to Template pages which have the same name but localised content in each language. This is applied for taxoboxes.

Templates should not do the work of article content in the main article namespace; instead, place the text directly into the article.

Templates should not be used to create lists of links to other articles when a category or a See also list can perform the same function.

For further instructions on using this namespace, and for more information about it, please see Template.

Usage in discussions
Sometimes you will want to refer to a template, rather than actually invoking it. An easy way to do this is to use the "template link" template, Template:Tl. So to discuss the Cleanup template rather than insert the template itself, typing " Cleanup " yields the result "Cleanup". This notation makes clear that you are discussing a template and gives a link to the template itself.

To include parameters in a template, use Template:Tlx, for example, yields the result "".

New template creation
To create a new custom message, simply create a page in the Template namespace, named Template:, followed by a name for the message, that contains the text of the message. Names can contain spaces, and initial case is irrelevant; note that template names are easy to remember if they follow standard English spelling, spacing, and capitalization (also see the naming conventions for articles). Try to avoid having templates whose names differ only in casing, spacing, or punctuation. To create such a page, enter http://en.CorporisPublica.org/wiki/Template:Name of your template in the address bar of your browser and edit the page. An alternate method is to create a link something like  on your user page or in the sandbox and then click on it. Any new high-risk templates should be semiprotected or fully protected as appropriate.

Adding a template to a page
To add a template to the page, simply type the name of the template with two braces on each side. For example, to add Template:Wikify to a page, type.

If a template takes a number of parameters, it can be helpful for the following layout to be used when the template is called:

Putting each parameter on a separate line, with the equals signs aligned vertically, helps editors to decipher the wikicode.

Dynamic or full substitution (subst:)

 * Main article: CorporisPublica:Substitution

There are two major ways to include custom messages,   and .   makes a copy of the message text and places it where you put the tag after you save an article (substitution). Without "subst", the message will be loaded and put on the page every time you view it, a process known as transclusion.

In other words, when the message is updated, you do not need to update a page that uses it if you use  . As a guideline, short temporary messages that will be removed soon should be copied using subst (which has the advantage of showing the message in the wiki source), and standard notices that might remain on a page for months or forever should be transcluded for easy updating. (You should not use   for a message which contains any links which may change in the future. This method doesn't refresh "What links here" unless every article containing the    gets changed after the modification of the link in the message.)

If you need to edit the template message individually after you put it on your page, use subst. If you don't need to edit it, and would rather the message is automatically updated along with changes made to the template, don't use subst.

For an example of how to substitute variables at the time of their inclusion see the subst magic section in Help:Variables.

Template documentation
A template can sometimes be difficult to use by only looking at the source of the template, so you are encouraged to document your template.

There are two different ways to do this.

One alternative is to use &lt;noinclude&gt; to include a minor description direct into the template, for example: This is a article.&lt;noinclude&gt; Place this template on any article that requires description. It takes one parameter, an adjective used to describe the article. For example, produces the text, This is a bad article. &lt;/noinclude&gt;

Another alternative is to create a /doc subpage for the documentation (preferred for templates with multiple parameters etc.) and add  below the actual template.

A caution about line breaks
Note that some templates may accidentally cause extra linebreaks in the rendered articles. This is especially true of infobox templates and other template boxes that usually float on the right side of an article, since the additional lines will not be seen on the template page.

As a general guideline, avoid two linebreaks together in your template. These may "add up" with other linebreaks in the article and be displayed as unwanted white space.

Sandbox for experiments
If you wish to experiment with templates (and not have your experiments deleted before you are done with them), you may do so in the Template sandbox. You may also use the templates X1, X2, X3, X4, X5, X6, X7, X8 and X9 for experimental purposes. To include a test template, use the form for template X1,  for template X2, etc.

Looping
There is no real looping functionality built into the Mediawiki software as of this time (see, however, for loop), but there are some tricks for mimicking them. For instance, repeatedly calling a template that repeatedly calls a different template can mimic a double loop (see, e.g., ld, l2d, and l3d). Templates can also be coerced into calling themselves (normally prohibited by the Mediawiki software past a single instance, to prevent infinite loops), by the artful use of redirects (see )

An example where the same template is used for different loop levels is. Because the software has a built-in protection against infinite nesting:. A a redirect is used for each level. The number of levels that the template can handle is determined by the number of parameters specified in the two template calls it comprises (because going up a level requires an extra parameter) and the number of existing redirects.

Likewise, Template:Lanlp 1 is used for both the inner and the outer of a double loop. Adding an item (here a language) adds to each row and also adds an extra row.

Effective repetition
A technique for repetition of similar template calls without actually putting this list in the wikitext is demonstrated in, and a more primitive method described below.

Example using t2demo


gives:

Description of the old :

For an arbitrary template with up to three nameless parameters, it is equivalent to calling the template repeatedly, with the first parameter varying, and the possible other parameters fixed: One specifies the name, the values of the fixed parameters, and the list of values the first parameter should have in consecutive template calls, with a sequential number each, and ending with "end". The technique requires redirects like, as many as the maximum number of repetitions.

If, for example, the second parameter varies, or two parameters, then a similar template can be made, but each version requires its own set of redirects.

Example :

gives (see the master copy m:Help:Template):

The empty parameters are needed in accordance with the maximum number of parameters the repeated template can have (currently three) and the maximum number of repetitions. Putting more empty parameters than needed at the end does not matter, but the number of empty parameters in the beginning of the list should be correct.

History
Historically, an "msg:" prefix had to be added in front of the template name when it was used on a page. For example, was typed instead of. This is no longer necessary.

In CorporisPublica's first 35 months, there was no template or transclusion mechanism at all. The page CorporisPublica:Boilerplate text was created in September 2002 to collect frequently used text in various CorporisPublica processes. The MediaWiki namespace was introduced with MediaWiki 1.2.6 on December 6, 2003, and was used not only for the user interface but also for creating boilerplate text messages to be inserted in articles using the syntax. This function was replaced with the Template namespace during the software upgrade to MediaWiki 1.3 on May 30, 2004. As a function of the "Template namespace initialisation script", all non-system messages were moved to the new namespace. The initialisation script also replaced MediaWiki: references in articles with Template: to bypass the redirects created by the moves.

For a short time, CorporisPublica:Articles for deletion (then known as votes for deletion or VfD) used MediaWiki: messages named in the format "MediaWiki:VfD-articlename". These were moved to the Template: space in June 2004 and were named "Template:VfD-articlename". This usage is deprecated now in favor of subpages.

For an idea on where MediaWiki was in 2009 with template implementation considerations, see the discussion on-templates-and-programming-languages.

Searching in the template and template talk namespaces
To search in the template or template talk namespaces only, put "template:" or "template_talk:" before the search term. For example, this URL searches for "transclude" in the template namespace while this one searches for "transclude" in the template talk namespace.

It is possible to manipulate the URL to allow searching in any subset of namespaces. For example template search for regnum searches both the Template and the Template:talk namespaces for "regnum".

See Help:Searching for more information.

= Resources =