In contrast to the macros listed in Commonly-used macros, the macros documented in this article are used infrequently or only in specific contexts, or are deprecated.
Special contexts
These macros are used only with particular contexts, such as a specific API reference.
jsapixreflinks to a page in the JSAPI Reference.XPCOMxreflinks to a page in the XPCOM reference. You can specify the name of an XPCOM function, class, component, or interface (although for the latter, you should useInterfaceinstead). This macro will find the page and create a link to it, wherever it is in the XPCOM reference subtree.npapilinks to the Gecko Plugin API Reference.interfacecan be used when linking to XPCOM interfaces.
Example:{{interface("nsIIOService")}}results in:nsIIOService.interface-methodcan be used to link to a method of a Mozilla interface in case the target interface is documented according to the current guidelines.
Example:{{interface-method("nsIFeedResult", "registerExtensionPrefix")}}results in:nsIFeedResult.registerExtensionPrefix(). You can also useinterfacemethodwhich does the same thing.ifmethodandifattributelet you create a link to a particular method or attribute (respectively) on a Mozilla interface that's been created using our standard format for interface documentation. For example,{{ifmethod("nsIAutoCompleteSearch","stopSearch")}}shows up asnsIAutoCompleteSearch.stopSearch(). Note that forifattribute,id="..."must be added explicitly in the target, since attributes do not have headings.Interwikimakes it easy to create interwiki links. Currently it supports linking to Wikipedia and Wikimo. The first parameter is the name of the wiki ("wikipedia" or "wikimo"), and the second is the path of the article. For example,{{interwiki("wikipedia", "Firefox")}}shows up as Firefox. This template auto-detects the page language and directs to the same language on Wikipedia, for example.RFCcreates a link to the specified RFC, given its number. The syntax is simply:{{RFC(number)}}. For example,{{RFC(2616)}}becomes RFC 2616.
XPCOM Interface reference summaries
Every article in the XPCOM interface reference should start with the interface summary block, which is created using IFSummary. This creates a uniform, standard format block at the top of the page with basic information about the interface. The template accepts up to 7 parameters, but requires only the first four. The parameters are, in order:
- Path of the IDL file defining the interface
- This is used to create a link to the interface's IDL on MXR so the reader can refer to it if they wish.
- Parent interface
- This is the name of the interface upon which the interface being document is based. This will be turned into a link to that interface in the interface reference and displayed.
- scriptable/not scriptable
- A string indicating whether the interface is scriptable or not. You must use either "scriptable" or "not scriptable" (these are, however, case insensitive). This will be turned into an appropriate indicator in the box, colored green for scriptable interfaces or red for non-scriptable ones. The indicator will also include a link to an article explaining what this means.
- Last changed in what Gecko version
- This is a string indicating the version of Gecko in which the interface was last changed. Should be a string in standard Gecko version format, such as "1.9" or "1.9.2" or even "1.9.1.6".
- Summary Optional
- A brief textual summary of what the interface does. Should be just a sentence or two. This is only optional for backward compatibility with old interface documents using the now deprecated InterfaceStatus template (which now calls through to this one). You should always provide this.
- Version introduced Optional
- If you know the version of Gecko in which the interface was introduced, include that here. This will trigger the inclusion of a version timeline showing the availability of the interface in contrast to the history of Gecko, in graphical format.
- Version deprecated Optional
- If the interface is deprecated, include that here. This will be used when drawing the version timeline diagram.
- Version obsoleted Optional
- Similarly, if the interface is obsolete and no longer available at all, include the Gecko version in which that took effect.
Examples:
{{IFSummary("netwerk/base/public/nsIIOService.idl", "nsISupports", "scriptable", "1.9", "Provides assorted network utility functions, as well as functions to parse URLs.", "1.1", "1.8.1", "1.9.2")}}
nsISupports
Last changed in Gecko 1.9 (Firefox 3){{IFSummary("netwerk/base/public/nsIIOService.idl", "nsISupports", "scriptable", "1.9", "Provides assorted network utility functions, as well as functions to parse URLs.", "1.1")}}
nsISupports
Last changed in Gecko 1.9 (Firefox 3){{IFSummary("netwerk/base/public/nsIIOService.idl", "nsISupports", "scriptable", "1.9.1")}}
nsISupports
Last changed in Gecko 1.9 (Firefox 3)If your summary is more complex and needs to include non-plaintext content, you can use IFSummaryStart and IFSummaryEnd to bracket your summary content.
Landing page components
We have an assortment of macros that can be used to automatically generate the contents of landing pages. Here they are.
Article lists divided by topic
We have an advanced macro that generates a menu of subpages, divided up into groups by topic area; this macro is called SubpageMenuByCategories, and it accepts as input a JSON array of tags and section names that correspond to those tags. Given that information, it pulls all subpages of the page on which the macro was invoked and produces a list of those pages, sorted into subheadings of the specified names, with each section's contents selected by the tags found on the articles.
Sections are listed in the order in which they're specified, and within each section, articles are sorted alphabetically.
Articles with the tag "Featured" are presented in special boxes at the top of the list; you should try to avoid having more than three of these.
The JSON input looks like this, for example:
{{SubpageMenuByCategories('[{"tag": "Overview", "name": "Overviews"}, {"tag": "Guide", "name": "Guides"}, {"tag": "Example", "name": "Sample code"}]')}}
This will split up the output among the headings "Overviews" (items found with the tag "Overview", "Guides" (items with the tag "Guide"), and "Sample code" (items with the tag "Example").
Community information boxes
Each top-level landing page, and some others, should have information about how to contact community related to that topic. The CommunityBox macro creates this for you. Its syntax:
{{CommunityBox(communityName, mailingListName, newsgroupName, ircChannelName, extraLinksString)}}
The IRC channel name and extra links string parameters are both optional.
The extra links string is a specially-formatted string for specifying the additional links that appear in the right-hand column of the box, below the IRC channel information. Its format:
heading|url|text|description||heading|url|text|description...
You may specify as many additional links as you need to (although you should try to keep this down to a scant handful, to avoid making the box unwieldy).
For example:
{{CommunityBox("UberSuperTech", "dev-ubersupertech", "dev.tech.ubersuper", "devmo", "MDN|https://developer.mozilla.org/|The MDN web site|Visit the Mozilla Developer Network||Mozilla|https://www.mozilla.org/|Mozilla's web site")}}
Join the UberSuperTech community
- IRC: #devmo (learn more)
- MDN: The MDN web site
- Mozilla: Mozilla's web site
Our style guide specifies that this box must be at the bottom of the page.
Lists of subpages
ListSubpagesgenerates an unordered list of links to all the immediate children of the current page; useful for automatically generating tables of contents for sets of documentation.LandingPageListSubpagesoutputs a two-column definition list of all immediate subpages of the current page, with their titles as the<dt>and their SEO summary as the<dd>. This makes it easy to automatically generate reasonably attractive landing pages.NavListWithPrioritizedPagesgenerates an ordered list formatted properly for use in a zone navigation sidebar (or quicklinks). As input, you can specify zero or more page slugs that should be pulled out of the main list and instead inserted at the top of the list, in the given order. All remaining pages are placed in the list alphabetically. One level of subpages is included.APIListAlphabuilds a list of the current page's subpages, formatted as a list of API terms, divided up by first letter. There are three parameters. The first is 0 if you want to include all top-level subpages or 1 to leave out subpages with "." in their names. The second and third let you add text to display as part of the name in each link. This can be used to add "<" and ">" for element links, or to add "()" at the end of lists of method names.SubpagesWithSummariesconstructs a definition list of all the immediate children of the current page. There is no other formatting done. You can get a two-column list ready for use as a multi-column landing page usingLandingPageListSubpages.SubpagesWithTagsconstructs a two-column definition list of all subpages (down several levels) of the specified page which also have one or more of the specified tags.Syntax:
{{SubpagesWithTags(rootPage, tagList)}}
rootPage- The path of the page whose children are to be scanned. This may be omitted or
nullto default to the current page. tagList- A comma-delineated string listing the tags that to match against. Any pages under
rootPagewhich has one or more of these tags will be included in the resulting list. For example, "build, introduction" will include in the list any pages tagged either "build" or "introduction". Pages which also have the tag "Important" get sorted to the top of the list (sorted alphabetically relative to other such tagged pages).
NeedsReviewWithTags. This template produces a list of articles for which the specified review flag is set. You may specify zero or one review types, as well as an optional list of tags to match against, and a Boolean value indicating whether or not to look across all locales or just the user's current locale.Syntax:
{{NeedsReviewWithTags(reviewtype, tagList, allLocales)}}
reviewtype- One of "editorial", "technical", or "kumascript". This can also be an empty string if you want all review types to be included.
tagListOptional- If present, this is a comma-delineated string listing the tags that must match before an article will be included in the resulting list. For example, "Mobile,Non-standard" will only include articles tagged with both "Mobile" and "Non-standard". You may omit this parameter, or provide an empty string, to match all pages. Pages which also have the tag "Important" get sorted to the top of the list (kept alphabetically amongst each other).
allLocalesOptional- If present, this is an integer value; if 0, only the user's current locale is included in the list. If this has any other value, all locales are included in the output.
Quicklinks
We have some macros specifically designed to create quicklinks:
- The
MakeSimpleQuicklinksmacro creates a flat list of links in the quicklinks box. Simply give it a set of paths to destination pages as its input arguments. Each link's text is the page title, and each link has a tooltip derived from the page summary. QuickLinksWithSubpagescreates a set of quicklinks comprised of the pages below the current page (or specified page, if one is given). Up to two total levels of depth are generated.
Infrequently used
outdatedcan be used to flag pages that are known to be (or might be) horribly outdated. The template is followed by an optional parameter, which can be used to provide details. For example:{{outdated("It was last updated in 1999.")}}gives you this:Warning: The content of this article may be out of date. It was last updated in 1999.
disambigis used on the few disambiguation pages we have. Do not use this macro on Glossary disambiguation pages; use theGlossaryDisambiguationmacro instead.block-titlecan be used to create bolded text which visually serves as a title for a block in a page, does not appear in the auto-generated table of contents, and can act as a link target just as headings do. The syntax is:{{block-title(title)}}, wheretitleis whatever you want displayed.titlealso serves as the target for links to the section you are titling.block-titleis meant for use in titling Template:sidenotes, tables, images, and code blocks, particularly in places where you'll be referring to the item more than once or in places not close to the item itself.refandendnotecan be used to implement footnotes to articles. The footnote "number" is created using{{ref("something")}}, wheresomethingshould be some suitably descriptive word for whatever is being mentioned in the footnote. Then, at the end of the document, insert{{endnote("something")}} Blah blah, text for first footnoteto create a numbered list for the footnotes' information.OptimizeImagesNotemacro returns text that explains that we encourage the use of image optimization software to improve page load times on MDN by making image files load as fast as possible, along with a link or links to tools we recommend for the purpose. Since image uploads are discussed in several places, this macro lets us quickly update all of the places that do so at once. By default, this macro returns HTML for a standard Note box. Specifying a non-zero parameter (such as {{OptimizeImagesNote(1)}}), you can get back just the text suitable for use in a paragraph.ReleaseChannelInfois used to create the standard header at the top of "Firefox X for developers" pages for a given channel; it takes four parameters: the Firefox version, the Gecko version, a string indicating an expected release date, and the name of the channel on which the release can currently be downloaded.InsertFeedLinkListoutputs a list of links from an RSS feed. Its parameters configure the output significantly:- Feed URL
- Maximum number of entries to include in the output
- The heading level to use for the name of the feed, or 0 to leave that heading out
- Class name to use when building the list; this will be applied to the
<ul>element. - List type; this is an integer value. 0 produces a simple bullet list, while 1 outputs a header for the page title followed by a paragraph with a byline in it.
- The heading level to use for the items in the list when using list type 1.
Transclusion
Transclusion is the embedding of part or all of one page into another. Exercise caution when using this macro, to ensure that the transcluded content makes sense in the context of the page it is embedded into.
Page lets you embed some or all of a specific page into a document. It accepts five parameters:
- The URI of the page to transclude. For example, "/en-US/docs/Project:MDN/About".
- The name of the section within the page to transclude. This can be specified either as the title string or as the ID of a block to copy over. If not specified, the entire article is transcluded. Optional
- The revision number of the page version to transclude. This feature is not currently implemented, but would allow including text from specific versions of an article. Unimplemented
- A Boolean value indicating whether or not to show the heading of the top-level section being transcluded. This is useful if you wish to specify your own heading. The default value is false, meaning the heading is not included by default. Optional
- The heading level to use as the top heading level. This adjusts the outermost first-discovered level of the transcluded content to the specified number, and all other headings correspondingly. This lets you include content that has its own headings but adjust them to match the heading level at which you're including them. If you don't specify this value, the headings are not adjusted. Unimplemented
Example without heading
{{Page("/en-US/docs/MDN/About", "About Mozilla")}}
Result:
Whether you want to learn more about who we are, how to be a part of Mozilla or just where to find us, you've come to the right place. To find out what drives us and makes us different, please visit our mission page.
Example with heading
{{Page("/en-US/docs/MDN/About", "About Mozilla", 0, 1)}}
Result:
About Mozilla
Whether you want to learn more about who we are, how to be a part of Mozilla or just where to find us, you've come to the right place. To find out what drives us and makes us different, please visit our mission page.
Creating new badges
Icon badges
We have the ability to create attractive icon-based badges to flag compatibility issues. This is done using IconBadge, which accepts five parameters:
- The text to display in the badge next to the icon.
- Class name for the background in the circle containing the icon. This background should include the icon to display.
- Class name for the background in the text area of the badge.
- Tooltip text. The tooltip doesn't currently draw but will eventually. Optional
For example:
{{IconBadge("Privileged", "privilegedBadge", "Only available to certified apps on Firefox OS.")}}
Results in: Privileged
Other badges
We also have badges that don't have icon bubbles. The generic template for this is SimpleBadge, which accepts three parameters:
- Text to display in the badge.
- Name of a CSS class to use as the background for the badge.
- (Optional) Text to display in a tooltip when hovering over the badge.
Deprecated
These macros have been replace by other ways of doing the same thing, and should no longer be used. If you find them in existing articles, please replace them.
Linking
- The
anchmacro inserts a link to an anchor.{{Anch("top")}}produces<a href="#top">top</a>(top). You can also add a second parameter which contains replacement text to display as the link text. {{anch("Other badges", "you can use other badges")}} produces this result: you can use other badges. The idea was to create a template that allows easy linking to other sections in a document. Replacement: Use the Anchor toolbar button in the Editor interface. This isn't really a "replacement" and there's some discussion about whether this is truly deprecated at this time. - The
SectionOnPagemacro creates a phrase that links to both the name of a section and the article containing that section. For example,{{SectionOnPage("/en-US/docs/Mozilla/Firefox/Releases/21", "Changes for Web developers")}}outputs the following: "Changes for Web developers" in Firefox 21 for developers. - The
manchinserts a link to a method within the current interface; this is intended only for use in interface documentation pages.{{manch("foo")}}produces<code><a href="current/path#foo">foo()</a></code>(foo()). - The
Linkmacro inserts a link to the specified page on MDN, using the page's title as the visible string to click on, and the tooltip picked up from the page's SEO summary. - The
LinkItemmacro inserts a link to a specified URL, with the indicated text as the visible string to click on. The link automatically picks up as its tooltip the summary of the target page. This differs fromLinkin that you must specify the title. - The
LinkItemDLmacro inserts a link to a specified URL, with the indicated text as a<dt>which is also the link. The<dd>element contains the specified page's summary. funcrefcreates links to global functions (usually C++) documented on top-level pages. However, such pages are no longer created at the top-level of MDN.Prefinserts a link to the entry in the Preference reference for the specified preference.specinserts a link to a specification. Replacement: UseSpec2orSpecNameinstead.sourceallows you to link to a Mozilla source code file without having to type a long MXR URL using this syntax:{{Source("browser/Makefile.in")}}. This gives you:browser/Makefile.in. The text of the link is the path provided; if you want different text, then just provide a second parameter, like so:{{Source("browser/Makefile.in", "the browser/ Makefile.in")}}, which produces the browser/ Makefile.in. Note that the link will be to the very latest version of the file in bleeding-edge code.Source_cvsworks just likesource, except it links to the CVS repository instead of the newer mozilla-central one.Includeinserts an #include "headername.h" reference that links to the specified file in MXR. This is used in pages that want to have a heading at the top of the page telling you how to include the appropriate header file for the interface being described. For example,{{Include("mozilla/CondVar.h")}}results in:#include "CondVar.h"
LXRSearchcan be used to create an LXR search URL.
Boilerplate
SeeDOMInterfaceinserts a blurb of text explaining that a specified interface implements a given DOM interface. Use this to create simple stub pages for Gecko interfaces that simply implement standard interfaces in the DOM. For example:{{SeeDOMInterface("nsIDOMHTMLFormElement", "HTMLFormElement")}}looks like this: ThensIDOMHTMLFormElementinterface implements the DOMHTMLFormElementinterface. See that page for details.DocPlanHelpUsinserts boilerplate text asking for help with an upcoming or ongoing documentation project, including offering information on how to get involved and where to find basic contribution information.
Code samples
The following macros were used prior to the implementation of the built-in live sample system in Kuma, and should be replaced by uses of EmbedLiveSample or LiveSampleLink.
LiveSamplelets you create a button linking to a sample file; these samples were sent to Eric Shepherd for uploading. These were used on Reference pages when linking to live, standalone sample pages. The template accepts one parameter, the name of the HTML file to link to.CSSLiveSamplelets you create a button linking to a sample in the CSS Reference; these samples were sent to Eric Shepherd for uploading. These were used on CSS Reference pages when linking to live, standalone sample pages. The template accepts one parameter, the name of the HTML file to link to.DOMLiveSamplelets you create a button linking to a sample in the DOM Reference; these samples were sent to Eric Shepherd for uploading. These were used on DOM Reference pages when linking to live, standalone sample pages. The template accepts one parameter, the name of the HTML file to link to.HTMLLiveSamplelets you create a button linking to a sample in the HTML Reference; these samples were sent to Eric Shepherd for uploading. These were used on HTML Reference pages when linking to live, standalone sample pages. The template accepts one parameter, the name of the HTML file to link to.SVGLiveSamplelets you create a button linking to a sample in the DOM Reference; these samples were sent to Eric Shepherd for uploading. These were used on SVG Reference pages when linking to live, standalone sample pages. The template accepts one parameter, the name of the HTML file to link to.JSFiddleLinklets you easily create a button linking to a sample on the jsFiddle web site. These should NOT be used to replace in-line samples, or MDC-uploaded samples, but to offer access to secondary examples readers can experiment with. The template accepts one parameter, the ID tag of the jsFiddle item to link to.
Organizational
LockedPageinserts a mark bar across the page that provides an explanation for why a page is locked. This macro is obsolete because Kuma doesn't support locking pages.jsapi_ref_headerwas used to create breadcrumbs for the JSAPI referenced; this is now done by Kuma, not by a macro.
Formatting
Noteinserts a specially-formatted "note" block into the article's text. This is intended to call out an interesting or important fact. Replacement: Use theNote boxstyle in the Editor toolbar.warninginserts a specially-formatted "warning" block.WarningStartandWarningEnddefine the start and end of warning block that needst to contain other macro calls .Replacement: Use theWarning boxstyle in the Editor toolbar.
Version indicators
The following macros are deprecated because this information should be contained in the Browser Compatibility table of the article.
gecko_minversion_headerindicates the minimum Gecko version for a feature.Geckoinserts the text "Gecko versionnumber" into the text, but adds a tooltip to the text that, when the user hovers over it, displays the corresponding versions of Firefox, Thunderbird, and SeaMonkey.fx_minversion_headerandfx_minversion_sectionindicate the minimum Firefox version for a feature.tb_minversion_header,tb_minversion_section, andtb_minversion_inlineindicate the minimum Thunderbird version for a feature.js_minversion_headerandjs_minversion_inlineindicate the minimum JavaScript version for a feature.MobileOnlyHeaderinserts an "Available only for mobile Firefox" header box.MobileOnlyInlineinserts a inline indicator. These indicate the version of Gecko as of which the interface is still only available for mobile.PlatformOnlyInline: this aims to replace the MobileOnlyInline with a more generic and therefore more useful one. The one-argument version simple states "Platform only", e.g. Firefox OS Only. The two argument version states a platform and a version number, e.g. Firefox OS 2.0 Onlydom_levelindicates the minimum DOM version for a feature.renamed_inlineinserts an in-line "renamed" mark to indicate that an API has been renamed.unimplemented_inlineinserts an in-line "unimplemented" mark to prevent the use of, for example a function, method or property which is not yet implemented. Replacement: Use the Browser Compatibility table to indicate this information.unimplemented_inline_webkitinserts an in-line "unimplemented" mark to prevent the use of, for example, a function, method or property which is not yet implemented. Replacement: Use the Browser Compatibility table to indicate this information.gecko_callout_headingincludes a Gecko version-specific call-out box.fx_minversion_notecreates a note about a minimum version of Firefox;GeckoMinVersionNoteStartandGeckoMinVersionNoteEndcan be used to wrap text inside a box labeled as pertaining to a given version of Gecko and later; specify the version as the sole parameter to the "start" macro.tb_minversion_notecreates a note about a minimum version of Thunderbird.js_minversion_notecreates a note about a minimum version of JavaScript.-
h1_gecko_minversion,h2_gecko_minversion, andh3_gecko_minversionlet you insert headers (h1, h2, and h3) that include at the right end of the line a badge indicating the Gecko version (and corresponding app versions) that the section applies to.