Difference between revisions of "BattleTechWiki:Template namespace"

(Creation (quick paste from Wikipedia))
 
m (Updating)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{short description|Type of page within Wikimedia}}
 
 
<noinclude>{{pp-vand|small=yes}}{{pp-move-indef}}</noinclude>
 
<noinclude>{{pp-vand|small=yes}}{{pp-move-indef}}</noinclude>
 
{{for|learning how templates work|Help:A quick guide to templates|Help:Template}}
 
{{for|learning how templates work|Help:A quick guide to templates|Help:Template}}
{{for|extended technical information|m:Help:Template|m:Help:Advanced templates}}
 
 
{{Subcat guideline|project content guideline||BTW:TMP|BTW:NS10}}
 
{{Subcat guideline|project content guideline||BTW:TMP|BTW:NS10}}
 
{{Nutshell|  
 
{{Nutshell|  
Line 8: Line 6:
 
* Templates should not normally be used to store [[BattleTechWiki:What is an article?|article text]]. Such content belongs in the article pages themselves.
 
* Templates should not normally be used to store [[BattleTechWiki:What is an article?|article text]]. Such content belongs in the article pages themselves.
 
}}
 
}}
{{Guideline list}}
 
 
{{namespaces}}
 
{{namespaces}}
 
The '''Template namespace''' on BattleTechWiki is used to store [[Help:Template|templates]], which contain [[Help:Wiki markup|Wiki markup]] intended for inclusion on multiple pages, usually via [[BattleTechWiki:Transclusion|transclusion]]. Although the Template namespace is used for storing most templates, it is possible to transclude and substitute from other namespaces,<ref>Namespaces from which transclusion is not allowed are specified on a wiki by the variable [[mw:Manual:$wgNonincludableNamespaces|$wgNonincludableNamespaces]]</ref> and so some template pages are placed in other namespaces, such as the [[BTW:User namespace|User namespace]].
 
The '''Template namespace''' on BattleTechWiki is used to store [[Help:Template|templates]], which contain [[Help:Wiki markup|Wiki markup]] intended for inclusion on multiple pages, usually via [[BattleTechWiki:Transclusion|transclusion]]. Although the Template namespace is used for storing most templates, it is possible to transclude and substitute from other namespaces,<ref>Namespaces from which transclusion is not allowed are specified on a wiki by the variable [[mw:Manual:$wgNonincludableNamespaces|$wgNonincludableNamespaces]]</ref> and so some template pages are placed in other namespaces, such as the [[BTW:User namespace|User namespace]].
  
Templates help maintain consistent formatting and aid navigation between articles. They often include optional and/or variable elements controlled by [[Help:Template#Parameters|parameters]] to allow for specialized use. Templates are also used to assist in a large variety of [[BattleTechWiki:Maintenance|BattleTechWiki maintenance]] tasks. Each template has a matching <code>Template talk:</code> page where editors can discuss the design and implementation of the associated template (see [[Help:Using talk pages]] for how to participate in talk page discussions).
+
Templates help maintain consistent formatting and aid navigation between articles. They often include optional and/or variable elements controlled by [[Help:Template#Parameters|parameters]] to allow for specialized use. Templates are also used to assist in a large variety of [[BattleTechWiki:Project Maintenance|BattleTechWiki maintenance]] tasks. Each template has a matching <code>Template talk:</code> page where editors can discuss the design and implementation of the associated template (see [[Help:Using talk pages]] for how to participate in talk page discussions).
  
 
A template is transcluded into another page by including a template tag in that page's content. A template tag contains the template [[BTW:page name|page name]] surrounded by double curly braces, e.g. {{tlc|Disambiguation}}. If the template's page name does not begin with a namespace and colon, it is assumed to be in the Template namespace.  
 
A template is transcluded into another page by including a template tag in that page's content. A template tag contains the template [[BTW:page name|page name]] surrounded by double curly braces, e.g. {{tlc|Disambiguation}}. If the template's page name does not begin with a namespace and colon, it is assumed to be in the Template namespace.  
Line 20: Line 17:
 
== Guidelines ==
 
== Guidelines ==
 
{{shortcut|BTW:TG|BTW:TMPG}}
 
{{shortcut|BTW:TG|BTW:TMPG}}
{{further|BattleTechWiki:Be bold#Template namespace}}
 
 
* Templates should not normally be used to store [[BattleTechWiki:What is an article?|article text]], as this makes it more difficult to edit the content. They should also [[BattleTechWiki:Manual of Style#Scrolling lists and collapsible content|not be used to "collapse" or "hide" content]] from the reader.
 
* Templates should not normally be used to store [[BattleTechWiki:What is an article?|article text]], as this makes it more difficult to edit the content. They should also [[BattleTechWiki:Manual of Style#Scrolling lists and collapsible content|not be used to "collapse" or "hide" content]] from the reader.
 
* Templates used in articles are designed to provide information to assist readers, such as navigation aids, formatting, or warnings that content is sub-standard. Templates that provide information only of service to editors should not appear on article pages{{snd}}use the article's talk page or other non-article namespaces.
 
* Templates used in articles are designed to provide information to assist readers, such as navigation aids, formatting, or warnings that content is sub-standard. Templates that provide information only of service to editors should not appear on article pages{{snd}}use the article's talk page or other non-article namespaces.
* Template function should be clear from the [[#Template names|template name]], but [[BattleTechWiki:Redirects#Template redirects|redirects]] can be created to assist everyday use of very popular templates.
+
* Template function should be clear from the [[#Template names|template name]], but [[Help:Redirect|redirects]] can be created to assist everyday use of very popular templates.
* [[BattleTechWiki:High-risk templates|High-risk templates]] should be semi-protected, [[BattleTechWiki:Template editor|template protected]], or fully protected as appropriate (see [[BattleTechWiki:Protection policy]]). This applies also to any high-use template redirects.
 
 
* Templates should be clearly [[#Documentation|documented]] as to their usage and scope.
 
* Templates should be clearly [[#Documentation|documented]] as to their usage and scope.
* Templates should not be used to create lists of links to other articles when a [[BattleTechWiki:Categories, lists, and navigation templates#Categories|category]], [[BattleTechWiki:Categories, lists, and navigation templates#Lists|list page]], or [[BattleTechWiki:See also|"See also" section list]] can perform the same function.
 
 
* Templates for short, temporary messages that will be removed quickly (such as on User_talk: pages) or that contain text which is not likely to ever be changed should be invoked with [[#Substitution|substitution]] (subst:). Typical templates that are intended for long-term use and are likely to require changes should be transcluded for easy future updates.
 
* Templates for short, temporary messages that will be removed quickly (such as on User_talk: pages) or that contain text which is not likely to ever be changed should be invoked with [[#Substitution|substitution]] (subst:). Typical templates that are intended for long-term use and are likely to require changes should be transcluded for easy future updates.
* Templates that violate the guidelines on this page, have poorly defined function, are redundant, become orphaned or used on only one page, or violate any BattleTechWiki policies may be nominated for deletion at [[BattleTechWiki:Templates for discussion]].
 
  
 
== Suggested practices ==
 
== Suggested practices ==
Line 39: Line 32:
 
{{shortcut|BTW:TPN}}
 
{{shortcut|BTW:TPN}}
 
Template names can be made of one or more words, such as {{tlc|Train topics}}. The first character (only) is not case-sensitive, so {{tlc|cleanup}} and {{tlc|Cleanup}} are the same template, but {{tlc|cfd}} and {{tlc|cfD}} are not. Template names are easiest to remember if they follow standard English spelling, spacing, and capitalization (also see the [[BattleTechWiki:Naming conventions|naming conventions]] for articles). Avoid having templates whose names differ only in case, spacing, or punctuation.
 
Template names can be made of one or more words, such as {{tlc|Train topics}}. The first character (only) is not case-sensitive, so {{tlc|cleanup}} and {{tlc|Cleanup}} are the same template, but {{tlc|cfd}} and {{tlc|cfD}} are not. Template names are easiest to remember if they follow standard English spelling, spacing, and capitalization (also see the [[BattleTechWiki:Naming conventions|naming conventions]] for articles). Avoid having templates whose names differ only in case, spacing, or punctuation.
 
=== Sandbox for experiments ===
 
{{main|BattleTechWiki:Template sandbox and test cases}}
 
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:Template sandbox|Template sandbox]]. You may also use the templates [[Template:X1|X1]], [[Template:X2|X2]], [[Template:X3|X3]], [[Template:X4|X4]], [[Template:X5|X5]], [[Template:X6|X6]], [[Template:X7|X7]], [[Template:X8|X8]], [[Template:X9|X9]], [[Template:X10|X10]], [[Template:X11|X11]], and [[Template:X12|X12]] for experimental purposes. To include a test template, use the form {{tlc|X1}} for template X1, {{tlc|X2}} for template X2, etc.
 
 
Existing templates often each have their own [[BattleTechWiki:Template sandbox and test cases|sandbox and test case]] pages (especially those that use {{tl|Documentation}}). Changes should be thoroughly tested there before being applied to the main template, in order to prevent unintentional damage to many pages.
 
  
 
=== Readability ===
 
=== Readability ===
Line 57: Line 44:
  
 
=== Line breaks ===
 
=== Line breaks ===
Some templates may accidentally cause extra line breaks in the rendered articles. This is especially true of [[BattleTechWiki:Infobox templates|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. For more information, see [[BattleTechWiki:Line-break handling]].
+
Some templates may accidentally cause extra line breaks in the rendered articles. This is especially true of [[BattleTechWiki:Manual of Style/Infoboxes|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. For more information, see [[BattleTechWiki:Line-break handling]].
  
 
As a general guideline, avoid two line breaks together in your template. These may "add up" with other line breaks in the article and be displayed as unwanted white space.
 
As a general guideline, avoid two line breaks together in your template. These may "add up" with other line breaks in the article and be displayed as unwanted white space.
Line 66: Line 53:
 
: '''<code>{{<span style="color:red;">subst:</span>name of template ''(|parameters |...)''}}</code>'''  
 
: '''<code>{{<span style="color:red;">subst:</span>name of template ''(|parameters |...)''}}</code>'''  
 
(that is, inserting '''<code>subst:</code>''' immediately after the opening pair of curly brackets)
 
(that is, inserting '''<code>subst:</code>''' immediately after the opening pair of curly brackets)
will make a copy of the template text and place it on the page, where it will be viewable in the source. The template is no longer [[transclusion|transcluded]] and future changes to the template will not change the text. As a [[#Guideline|guideline]], this method should be used for any short, temporary messages which are removed quickly, such as on User_talk: pages. The standard new user {{tlx|Welcome}} message is a good example.
+
will make a copy of the template text and place it on the page, where it will be viewable in the source. The template is no longer [[w:transclusion|transcluded]] and future changes to the template will not change the text. As a [[#Guideline|guideline]], this method should be used for any short, temporary messages which are removed quickly, such as on User_talk: pages. The standard new user {{tlx|Welcome}} message is a good example.
  
 
Use subst: also if you need to edit the message after including it on the page. 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:.
 
Use subst: also if you need to edit the message after including it on the page. 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:.
Line 92: Line 79:
  
 
===Modules===
 
===Modules===
 
+
[[BTW:Lua|Lua]] modules are sometimes used instead of templates to store reusable material. Reasons for this include usage of module-specific features such as [[w:loop (programming)|loops]] or stored values, and complex code is often easier to read and maintain in a module. If a module is easily implementable in a template it generally should be, since there are more users with experience editing templates.
[[BTW:Lua|Lua]] modules are sometimes used instead of templates to store reusable material. Reasons for this include usage of module-specific features such as [[loop (programming)|loops]] or stored values, and complex code is often easier to read and maintain in a module. If a module is easily implementable in a template it generally should be, since there are more users with experience editing templates.
 
  
 
If a module is intended to be used in articles or talk pages, a template wrapper should generally be created to simplify usage without directly requiring the <code>#invoke</code> parser function. Documentation is then mostly located on the template's /doc page, with the module's documentation pointing to the template and/or explaining further technical details that are unnecessary at the primary template documentation.
 
If a module is intended to be used in articles or talk pages, a template wrapper should generally be created to simplify usage without directly requiring the <code>#invoke</code> parser function. Documentation is then mostly located on the template's /doc page, with the module's documentation pointing to the template and/or explaining further technical details that are unnecessary at the primary template documentation.
  
There are sometimes reasons not to use a template wrapper, however, such as causing potential issues with [[BTW:template limits|template limits]]; a template wrapper that passes too many parameters to a module is much less efficient compared to a direct invocation. Additionally, it is generally not desirable to use template wrappers in other templates.
+
There are sometimes reasons not to use a template wrapper, however, such as causing potential issues with [[w:Help:Template limits|template limits]]; a template wrapper that passes too many parameters to a module is much less efficient compared to a direct invocation. Additionally, it is generally not desirable to use template wrappers in other templates.
 
 
== History ==
 
Historically, an "msg:" prefix had to be added in front of the template name when it was used on a page. For example, <nowiki>{{msg:stub}} was typed instead of {{stub}}</nowiki>. This is no longer necessary.
 
 
 
In BattleTechWiki's first 35 months, there was no template or transclusion mechanism at all. The page [[BattleTechWiki:Boilerplate text]] was created in September 2002 to collect frequently used text in various BattleTechWiki processes. The [[Help:MediaWiki namespace|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 <nowiki>{{msg:&nbsp;...}}</nowiki> syntax. This function was replaced with the [[BattleTechWiki:Template namespace|Template namespace]] during the software upgrade to MediaWiki 1.3 on May 30, 2004. As a function of the "[[User:Template namespace initialisation script|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, [[BattleTechWiki: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.
 
 
 
Around 2005, growing complexity of template functions and the desire to consolidate similar templates led to the creation of extremely complex conditional hacks such as [[BattleTechWiki:Avoid using meta-templates|nested templates]] and [[BattleTechWiki:HiddenStructure|CSS tricks]]. These undesirable methods led to the development of [[m:Extension:ParserFunctions]], added in 2006 with MediaWiki 1.7. By 2009, many problems with template readability and complexity still remained (''[https://blog.wikimedia.org/2009/06/30/on-templates-and-programming-languages/ On templates and programming languages]''). In 2013, in order to address page load times, mostly due to slow template renders, [[BattleTechWiki:Lua|Lua]] was enabled, creating a Module: namespace for programmers to make use of (''[https://blog.wikimedia.org/2013/03/11/lua-templates-faster-more-flexible-pages/ New Lua templates bring faster, more flexible pages to your wiki]'').
 
  
 
== Searching for templates ==
 
== Searching for templates ==
Use this form to search in the Template: or Template_talk: namespaces. See [[Help:Searching]] for more information.
 
<inputbox>
 
type=search
 
break=no
 
namespaces=Template**,Template_talk
 
searchbuttonlabel=Search within the Template: namespace
 
</inputbox>
 
 
 
Pages which contain information on commonly used templates:
 
Pages which contain information on commonly used templates:
 
* [[BattleTechWiki:Template index]] for an index of text-based templates.
 
* [[BattleTechWiki:Template index]] for an index of text-based templates.
* [[BattleTechWiki:Navigation template]]s for a partial list of various subject-class navigational elements.
 
* [[BattleTechWiki:List of infoboxes]] for infoboxes, which are small panels that summarize key features of the page's subject.
 
 
* [[BattleTechWiki:Categorization]] for templates used for [[Help:Category|categories]]
 
* [[BattleTechWiki:Categorization]] for templates used for [[Help:Category|categories]]
 
* [[BattleTechWiki:Citation templates]] for templates used to format article [[BattleTechWiki:Citing sources|references and citations]]
 
* [[BattleTechWiki:Citation templates]] for templates used to format article [[BattleTechWiki:Citing sources|references and citations]]
 
If you're unable to find an existing template for your situation, but don't feel comfortable creating one yourself, you can ask for help at [[BattleTechWiki:Requested templates]].
 
  
 
==See also==
 
==See also==
Line 130: Line 95:
 
* [[Help:Magic words]] for all template modifiers
 
* [[Help:Magic words]] for all template modifiers
 
* [[Help:Conditional tables]]
 
* [[Help:Conditional tables]]
* [[BattleTechWiki:Template standardisation]]
 
  
 
==Notes==
 
==Notes==
Line 138: Line 102:
 
{{BattleTechWiki templates|state=collapsed}}
 
{{BattleTechWiki templates|state=collapsed}}
  
[[Category:BattleTechWiki template administration|Namespace]]
+
[[Category:Template administration|Namespace]]
[[Category:BattleTechWiki how-to|{{PAGENAME}}]]
 
 
[[Category:BattleTechWiki features|{{PAGENAME}}]]
 
[[Category:BattleTechWiki features|{{PAGENAME}}]]
[[Category:BattleTechWiki template guidelines|namespace]]
+
[[Category:Template guidelines|namespace]]
[[Category:BattleTechWiki template help]]
+
[[Category:Template help]]

Latest revision as of 18:53, 7 September 2023

BattleTechWiki data structure
Namespaces
Subject namespaces Talk namespaces
0 (Main/Article) Talk 1
2 User User talk 3
4 BattleTechWiki BattleTechWiki talk 5
6 File File talk 7
8 MediaWiki MediaWiki talk 9
10 Template Template talk 11
12 Help Help talk 13
14 Category Category talk 15
100 Policy Policy Talk 101
102 Property Property talk 103
106 Form Form talk 107
108 Concept Concept talk 109
112 smw/schema smw/schema talk 113
114 Rule Rule talk 115
118 Draft Draft Talk 119
828 Module Module talk 829
3000 Portal Portal Talk 3001
3010 Guideline Guideline Talk 3011
3012 Information Information Talk 3013
Virtual namespaces
-1 Special
-2 Media
Current list (API call)

The Template namespace on BattleTechWiki is used to store templates, which contain Wiki markup intended for inclusion on multiple pages, usually via transclusion. Although the Template namespace is used for storing most templates, it is possible to transclude and substitute from other namespaces,[1] and so some template pages are placed in other namespaces, such as the User namespace.

Templates help maintain consistent formatting and aid navigation between articles. They often include optional and/or variable elements controlled by parameters to allow for specialized use. Templates are also used to assist in a large variety of BattleTechWiki maintenance tasks. Each template has a matching Template talk: page where editors can discuss the design and implementation of the associated template (see Help:Using talk pages for how to participate in talk page discussions).

A template is transcluded into another page by including a template tag in that page's content. A template tag contains the template page name surrounded by double curly braces, e.g. {{Disambiguation}}. If the template's page name does not begin with a namespace and colon, it is assumed to be in the Template namespace.

Internal links to template pages may be made by using the Template: prefix, e.g. [[Template:Disambiguation]]. These links go to a page that directly contains a base template and often documentation.

Guidelines[edit]

  • Templates should not normally be used to store article text, as this makes it more difficult to edit the content. They should also not be used to "collapse" or "hide" content from the reader.
  • Templates used in articles are designed to provide information to assist readers, such as navigation aids, formatting, or warnings that content is sub-standard. Templates that provide information only of service to editors should not appear on article pages – use the article's talk page or other non-article namespaces.
  • Template function should be clear from the template name, but redirects can be created to assist everyday use of very popular templates.
  • Templates should be clearly documented as to their usage and scope.
  • Templates for short, temporary messages that will be removed quickly (such as on User_talk: pages) or that contain text which is not likely to ever be changed should be invoked with substitution (subst:). Typical templates that are intended for long-term use and are likely to require changes should be transcluded for easy future updates.

Suggested practices[edit]

Referencing templates[edit]

Sometimes you will want to refer to a template, rather than actually invoking it. An easy way to do this is to call Template:Tl (short for "template link"). For example, to reference the Cleanup template, typing {{tl|Cleanup}} results in {{Cleanup}}. You can also add parameters using Template:Tlp; for example, {{tlp|Convert|1|m}} displays as {{Convert|1|m}}.

Check the template documentation on Template:Tl for other options, such as {{tlb}} (bold), {{tlx}} (code), {{tlxi|param1|param2}} (italic parameters), and many more.

Template names[edit]

Template names can be made of one or more words, such as {{Train topics}}. The first character (only) is not case-sensitive, so {{cleanup}} and {{Cleanup}} are the same template, but {{cfd}} and {{cfD}} are not. Template names are easiest to remember if they follow standard English spelling, spacing, and capitalization (also see the naming conventions for articles). Avoid having templates whose names differ only in case, spacing, or punctuation.

Readability[edit]

For templates that use a large number of parameters, it can be helpful to place each parameter on a separate line and align the equals signs. This helps future editors to more easily read the wikicode.

{{Example template name
| first_parameter  = Text of first_value
| second_parameter = Text of second_value
| third_parameter  = Text of third_parameter
| etc              = etc
}}

Line breaks[edit]

Some templates may accidentally cause extra line breaks 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. For more information, see BattleTechWiki:Line-break handling.

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

Substitution[edit]

Invoking a template using the form

{{subst:name of template (|parameters |...)}}

(that is, inserting subst: immediately after the opening pair of curly brackets) will make a copy of the template text and place it on the page, where it will be viewable in the source. The template is no longer transcluded and future changes to the template will not change the text. As a guideline, this method should be used for any short, temporary messages which are removed quickly, such as on User_talk: pages. The standard new user {{Welcome}} message is a good example.

Use subst: also if you need to edit the message after including it on the page. 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:.

Documentation[edit]

Because templates represent a step up in difficulty for the novice editor, documentation should be provided which describes its usage (optional parameters) and scope (where it should be used). There are two different ways to do this:

One alternative is to use <noinclude> to add a minor description direct into the template, for example:

'''This is a {{{1}}} article.'''<noinclude>
Place this template on any article that requires description. It 
takes one parameter, an adjective used to describe the article. 
For example, {{article-describe|bad}} produces the text, 
'''This is a bad article.'''
</noinclude>

Another alternative is to create a formal /doc subpage for the documentation (preferred for templates with multiple parameters, etc.) and add <noinclude>{{Documentation}}</noinclude> after the actual template. The first "noinclude" tag should be placed on the same line as the end braces of the actual template in the following manner:

{{(template name)
(piped parameters)
}}<noinclude>...

If the "noinclude" tag starts on the line below the template's closing braces, then unwanted whitespace is introduced at the bottom of the template when it is used in articles and on other pages.

Modules[edit]

Lua modules are sometimes used instead of templates to store reusable material. Reasons for this include usage of module-specific features such as loops or stored values, and complex code is often easier to read and maintain in a module. If a module is easily implementable in a template it generally should be, since there are more users with experience editing templates.

If a module is intended to be used in articles or talk pages, a template wrapper should generally be created to simplify usage without directly requiring the #invoke parser function. Documentation is then mostly located on the template's /doc page, with the module's documentation pointing to the template and/or explaining further technical details that are unnecessary at the primary template documentation.

There are sometimes reasons not to use a template wrapper, however, such as causing potential issues with template limits; a template wrapper that passes too many parameters to a module is much less efficient compared to a direct invocation. Additionally, it is generally not desirable to use template wrappers in other templates.

Searching for templates[edit]

Pages which contain information on commonly used templates:

See also[edit]

Notes[edit]

  1. Namespaces from which transclusion is not allowed are specified on a wiki by the variable $wgNonincludableNamespaces