<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Manual%3AExtending_wiki_markup</id>
	<title>Manual:Extending wiki markup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://compusofia.com/w/index.php?action=history&amp;feed=atom&amp;title=Manual%3AExtending_wiki_markup"/>
	<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Manual:Extending_wiki_markup&amp;action=history"/>
	<updated>2026-04-18T21:28:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://compusofia.com/w/index.php?title=Manual:Extending_wiki_markup&amp;diff=7392&amp;oldid=prev</id>
		<title>Majestix: Created page with &quot;&lt;languages/&gt; {{Magic words}} &lt;translate&gt;&lt;!--T:1--&gt; MediaWiki provides a standard text markup that can be easily customized.&lt;/translate&gt; &lt;translate&gt;&lt;!--T:37--&gt; Extensions can customize wiki markup by:&lt;/translate&gt; &lt;translate&gt; &lt;!--T:2--&gt; * &#039;&#039;&#039;Adding standard token types&#039;&#039;&#039; &amp;ndash; The standard approach to customized MediaWiki markup is to add new markup that looks like the built-in MediaWiki XML tags (&lt;code&gt;&amp;l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://compusofia.com/w/index.php?title=Manual:Extending_wiki_markup&amp;diff=7392&amp;oldid=prev"/>
		<updated>2026-04-17T08:10:35Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;languages/&amp;gt; {{Magic words}} &amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; MediaWiki provides a standard text markup that can be easily customized.&amp;lt;/translate&amp;gt; &amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; Extensions can customize wiki markup by:&amp;lt;/translate&amp;gt; &amp;lt;translate&amp;gt; &amp;lt;!--T:2--&amp;gt; * &amp;#039;&amp;#039;&amp;#039;Adding standard token types&amp;#039;&amp;#039;&amp;#039; – The standard approach to customized MediaWiki markup is to add new markup that looks like the built-in MediaWiki [[&amp;lt;tvar name=1&amp;gt;Special:MyLanguage/Manual:Tag extensions&amp;lt;/tvar&amp;gt;|XML tags]] (&amp;lt;code&amp;gt;&amp;amp;l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
{{Magic words}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:1--&amp;gt; MediaWiki provides a standard text markup that can be easily customized.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:37--&amp;gt; Extensions can customize wiki markup by:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Adding standard token types&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; The standard approach to customized MediaWiki markup is to add new markup that looks like the built-in MediaWiki [[&amp;lt;tvar name=1&amp;gt;Special:MyLanguage/Manual:Tag extensions&amp;lt;/tvar&amp;gt;|XML tags]] (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;#039;&amp;#039;tag&amp;#039;&amp;#039;&amp;amp;gt;&amp;lt;/code&amp;gt;), [[&amp;lt;tvar name=2&amp;gt;Special:MyLanguage/Help:Templates&amp;lt;/tvar&amp;gt;|template]] (&amp;lt;tvar name=3&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{...}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/tvar&amp;gt;), or link markup (&amp;lt;tvar name=4&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[...]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/tvar&amp;gt;).&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Adding custom token types&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; Some extensions define new token types.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Making fundamental changes to the parser&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash;  A few extensions attempt to fundamentally change the parsing strategy so that other markup languages can be used instead of the standard wiki markup.&lt;br /&gt;
&lt;br /&gt;
== Adding to the standard token types == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
The simplest way to extend wiki markup is by adding to a standard token type using one of these features.&lt;br /&gt;
&lt;br /&gt;
=== Variables === &amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:40--&amp;gt; A variable calls a PHP function that outputs a string of &amp;lt;tvar name=1&amp;gt;{{ll|wikitext}}&amp;lt;/tvar&amp;gt; that replaces the variable on the page.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:28--&amp;gt; Variables are usually used to insert system information into wiki markup, such as the current time or the current page.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:41--&amp;gt; Syntax example:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{VARIABLENAME}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:42--&amp;gt; To define a variable, see &amp;lt;tvar name=1&amp;gt;{{ll|Manual:Variables}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:43--&amp;gt; For a list of extensions that define custom variables, see &amp;lt;tvar name=1&amp;gt;{{ll|Category:Variable extensions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Parser functions === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:45--&amp;gt; Like variables, a parser function calls a PHP function and outputs a wikitext string that replaces the parser function on the page.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:46--&amp;gt; Unlike variables, a parser function can pass parameters to the PHP function.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:26--&amp;gt; Parser functions are used to handle wikitext generation that involves logic that is too complex or confusing to write using templates.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:47--&amp;gt; Syntax example:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;{{#functionname: param1 | param2}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:48--&amp;gt; To define a parser function, see &amp;lt;tvar name=1&amp;gt;{{ll|Manual:Parser functions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:49--&amp;gt; For a list of extensions that define custom parser functions, see &amp;lt;tvar name=1&amp;gt;{{ll|Category:Parser function extensions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Parser tags === &amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:51--&amp;gt; Unlike variables and parser functions, which output wikitext, parser tags output HTML.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:52--&amp;gt; A parser tag is an [[w:XML|XML]] tag that calls a PHP function, parses the contents of the tag, and outputs HTML that replaces the tag and its contents on the page.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:53--&amp;gt; Parser tags can also pass arguments to the PHP function.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:54--&amp;gt; For example, &amp;lt;tvar name=1&amp;gt;{{tag|syntaxhighlight|open}}&amp;lt;/tvar&amp;gt; is a parser tag defined by &amp;lt;tvar name=2&amp;gt;{{ll|Extension:SyntaxHighlight}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:55--&amp;gt; Syntax example:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;tagname param1name=&amp;quot;param1value&amp;quot; param2name=&amp;quot;param2value&amp;quot;&amp;gt; some text &amp;lt;/tagname&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:56--&amp;gt; To define a parser tag, see &amp;lt;tvar name=1&amp;gt;{{ll|Manual:Tag extensions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:57--&amp;gt; For a list of extensions that define custom parser tags, see &amp;lt;tvar name=1&amp;gt;{{ll|Category:Tag extensions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Behavior switches === &amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:59--&amp;gt; A behavior switch calls a PHP function, but, unlike other methods of extending wiki markup, behavior switches usually do not output any content.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:60--&amp;gt; Instead, they change the behavior of the page or set a page property.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:61--&amp;gt; For example, adding &amp;lt;tvar name=1&amp;gt;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;__NOTOC__&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/tvar&amp;gt; to a page hides the table of contents.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:62--&amp;gt; Syntax example:&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;__SWITCHNAME__&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:63--&amp;gt; To define a behavior switch, see &amp;lt;tvar name=1&amp;gt;{{ll|Manual:Magic words#Behavior switches (double underscore magic words)}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&amp;lt;!--T:64--&amp;gt; For a list of extensions that define custom behavior switches, see &amp;lt;tvar name=1&amp;gt;{{ll|Help:Magic words#From Extensions}}&amp;lt;/tvar&amp;gt;.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
=== Link markup === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
Link markup customizations change the way MediaWiki interprets internal links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
Syntax example:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;wikitext&amp;quot;&amp;gt;[[ ... ]]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
For a list of extensions that define custom link markup, see &amp;lt;tvar name=1&amp;gt;{{ll|Category:Link markup extensions}}&amp;lt;/tvar&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Adding new token types == &amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
To add new token types or to change the entire markup strategy, implementers need to add functions to one or more of the various parser and page output [[&amp;lt;tvar name=1&amp;gt;Special:MyLanguage/Manual:Hooks&amp;lt;/tvar&amp;gt;|hooks]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
* &amp;lt;tvar name=1&amp;gt;&amp;#039;&amp;#039;&amp;#039;{{ll|Category:ParserBeforeInternalParse extensions}}&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tvar&amp;gt; rely on the &amp;lt;tvar name=2&amp;gt;{{ll|Manual:Hooks/ParserBeforeInternalParse|ParserBeforeInternalParse}}&amp;lt;/tvar&amp;gt; hook.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
* &amp;lt;tvar name=1&amp;gt;&amp;#039;&amp;#039;&amp;#039;{{ll|Category:OutputPageBeforeHTML extensions}}&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tvar&amp;gt; rely on the &amp;lt;tvar name=2&amp;gt;{{ll|Manual:Hooks/OutputPageBeforeHTML|OutputPageBeforeHTML}}&amp;lt;/tvar&amp;gt; hook.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* &amp;lt;tvar name=1&amp;gt;&amp;#039;&amp;#039;&amp;#039;{{ll|Category:ParserAfterTidy extensions}}&amp;#039;&amp;#039;&amp;#039;&amp;lt;/tvar&amp;gt; rely on the &amp;lt;tvar name=2&amp;gt;{{ll|Manual:Hooks/ParserAfterTidy|ParserAfterTidy}}&amp;lt;/tvar&amp;gt; hook.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
See also &amp;lt;tvar name=1&amp;gt;{{ll|Category:Extensions by hook usage}}&amp;lt;/tvar&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== See also == &amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
* {{ll|Manual:Extensions}} - &amp;lt;translate&amp;gt;&amp;lt;!--T:20--&amp;gt; provides general instructions for finding, installing, and writing extensions.&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Extension development}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Parser extensions{{#translation:}}|*{{PAGENAME}}]]&lt;br /&gt;
[[Category:Customization techniques{{#translation:}}|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Majestix</name></author>
	</entry>
</feed>