萌娘百科衷心希望身在武汉等疫区的编辑读者保重身体,早日战胜新型冠状病毒肺炎疫情!
  • 你好~!欢迎来到萌娘百科!如果您是第一次来到这里,点这里加入萌娘百科!
  • 欢迎具有翻译能力的同学~有意者请点→Category:需要翻译的条目
  • 如果您在萌娘百科上发现某些内容错误/空缺,请勇于修正/添加!编辑萌娘百科其实很容易!
  • 觉得萌娘百科有趣的话,请推荐给朋友哦~
  • 萌娘百科群119170500欢迎加入,加入时请写明【萌娘百科+自己的ID】~
  • 萌娘百科Discord群组已经建立,请点此加入!

帮助:魔术字/解析器函数

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转至: 导航搜索

解析器函数与系统变量非常相似,但与后者相比,前者全部要求至少传入一个参数,所有的参数1与函数名之间均用:而不是|分割。

解析器函数有时会在函数名前加上#用以与模板区分。

列表

以下表格详细说明了萌百可用的解析器函数,部分术语未作解释。

解析器函数 输入 → 输出 描述
URL与标题的数据和解析
{{localurl:页面名称}}
{{localurl:页面名称|查询字符串}}
{{localurl:Mainpage}} → /Mainpage
{{localurl:Mainpage|printable=yes}} → /index.php?title=Mainpage&printable=yes
指定页面的相对路径
{{fullurl:页面名称}}
{{fullurl:页面名称|查询字符串}}
{{fullurl:跨wiki前缀:远程页面名称|查询字符串}}
{{fullurl:Category:帮助}}https://zh.moegirl.org/Category:%E5%B8%AE%E5%8A%A9
{{fullurl:Category:帮助|action=edit}}https://zh.moegirl.org/index.php?title=Category:%E5%B8%AE%E5%8A%A9&action=edit
{{fullurl:mw:MediaWiki/zh|action=edit}}https://www.mediawiki.org/wiki/MediaWiki/zh?action=edit
{{fullurl:mw:Help:Magic words|action=edit}}https://www.mediawiki.org/wiki/Help:Magic_words?action=edit
指定页面的相对协议路径,该解析器函数也能识别跨wiki前缀。
注意:未被方括号包裹起来的相对协议路径不会自动生成为链接
{{canonicalurl:页面名称}}
{{canonicalurl:页面名称|查询字符串}}
{{canonicalurl:interwiki:远程页面名称|查询字符串}}
{{canonicalurl:Category:帮助}}https://zh.moegirl.org/Category:%E5%B8%AE%E5%8A%A9
{{canonicalurl:Category:帮助|action=edit}}https://zh.moegirl.org/index.php?title=Category:%E5%B8%AE%E5%8A%A9&action=edit
{{canonicalurl:mw:Help:Magic words|action=edit}}https://www.mediawiki.org/wiki/Help:Magic_words?action=edit
指定页面的绝对协议路径,该解析器函数也能识别跨wiki前缀。
{{filepath:文件名称}}
{{filepath:文件名称|nowiki}}
{{filepath:文件名称|缩略图大小}}
{{filepath:Box-1.png}}Box-1.png
{{filepath:Box-1.png|120}}120px-Box-1.png
{{filepath:Box-1.png|nowiki}} → https://img.moegirl.org/common/5/56/Box-1.png
指定文件的绝对协议路径,可以指定缩略图大小(仅能指定宽度大小,单位为px),也可以指定是否被直接渲染为图片
{{urlencode:字符串}}
{{urlencode:字符串|QUERY}}{{urlencode:字符串|WIKI}}{{urlencode:字符串|PATH}}
{{urlencode:x:y/z á é-萌娘百科}}{{urlencode:x:y/z á é-萌娘百科|QUERY}} → x%3Ay%2Fz+%C3%A1+%C3%A9-%E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91
{{urlencode:x:y/z á é-萌娘百科|WIKI}} → x%3Ay%2Fz+%C3%A1+%C3%A9-%E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91
{{urlencode:x:y/z á é-萌娘百科|PATH}} → x%3Ay%2Fz+%C3%A1+%C3%A9-%E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91
输出指定字符串经编码后的结果。不同的参数指定不同的编码规则,用于解析页面标题到MediaWiki类站点链接时建议使用WIKI,解析字符串到文件名时建议使用PATH,解析字符串到搜索引擎链接时建议使用(空)、QUERY;如果你不清楚如何选择时,你可以到Talk:提问求助区求助
{{anchorencode:字符串}} {{anchorencode:x:y/z á é-萌娘百科}} → x:y/z_á_é-萌娘百科 输出指定字符串经MediaWiki页内标题链接编码规则编码后的结果,可用于指定内容的标题的页内导航
{{#rel2abs: 路径}}
{{#rel2abs: 路径 | 基础路径}}
{{#rel2abs: /quok | Help:Foo/bar/baz}} → Help:Foo/bar/baz/quok
{{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}错误:无效路径深度:“Help:Foo/bar/baz/../../../../quok”(尝试访问根节点以上节点)
本函数用于以通用的命令行目录变换格式来变换页面路径:
  • 如果没有给定参数2,基础路径为当前页面路径;
  • 参数1中可以使用以下格式来变换路径:
    • .指定基础路径;
    • ..使基础路径上移一层
    • /path使基础路径移动到下一层名为path的页面

对于不合法的参数1,函数并不会直接抛出错误,而是尝试剔除错误部分继续工作:

  • {{#rel2abs: ../quok/. | Help:Foo/bar/baz}} → Help:Foo/bar/quok
  • {{#rel2abs: ../../../quok | Help:Foo/bar/baz}} → quok
{{#titleparts: 要解析的标题 | 要返回的层数 | 返回部分的起始点}} {{#titleparts: Talk:Foo/bar/baz/quok | 2}} → Talk:Foo/bar
{{#titleparts: Talk:Foo/bar/baz/quok | 2 | 2}} → bar/baz
{{#titleparts: Talk:Foo/bar/baz/quok | -2}} → Talk:Foo/bar
{{#titleparts: Talk:Foo/bar/baz/quok | -1 | -2}} → baz
该函数用于输出给定标题的一部分:
  1. 参数1指定要解析的标题;
  2. 参数2指定返回的部分的层数,默认接受正整数向后计数,本参数也可以接受一个负整数,用以从最后一层向前计数舍去被计入的部分;
  3. 参数3指定从何处开始返回,默认接受正整数从根路径向后计数,本参数也可以接受一个负整数,用以从最后一层向前计数。

注意:

  • 本函数会对参数1先进行url解码再进行解析;
  • 本函数返回被解析后的部分;
  • 本函数返回的部分受MediaWiki标题限制:
    1. 所有下划线会被替换成空格:{{#titleparts: Talk:Foo/bah_boo|1|2}} → bah boo
    2. 只对前25层做划分,即第25层和第25层以下的内容会合并为1个第25层:{{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}} → 24/25/26/27/28
      为了避免这个缺陷,你可以用嵌套的方式:{{#titleparts: {{#titleparts: 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28 | 2 | 24}} | 1 | 2}} → 25
    3. 上一个函数提到的命令行目录变换格式不被接受;
    4. 参数1的首字母会变为大写:{{#titleparts: talk:a/b/c}} → Talk:A/b/c
    5. 若参数1不合法则会被直接输出{{#titleparts: [[首页]]/123 | 1 | 2}}首页/123
名字空间
名字空间解析器函数{{ns:}}返回标准名字空间的本地化名称(萌百使用标准名称作为本地化名称)或自定义名字空间的名称,参数1可以指定名字空间的ID,标准名字空间的MediaWiki标准名称、本地(语言变种)化名,自定义名字空间的名称:
  • {{ns:2}} = {{ns:User}} = {{ns:用户}} = {{ns:用戶}} = {{ns:使用者}} → User
  • {{ns:5}} = {{ns:Project Talk}} = {{ns:萌娘百科讨论}} = {{ns:萌娘百科討論}} = {{ns:萌娘百科 talk}} → 萌娘百科 talk

需要注意的是:

  1. 该解析器函数的参数1可以使用Image,效果与File一致;
  2. 在解析器函数名后加一个e可以得到经MediaWiki URL编码规则编码后的标准名字空间的本地化名称或自定义名字空间的名称,很适合用于外链中:
    • {{nse:5}} → %E8%90%8C%E5%A8%98%E7%99%BE%E7%A7%91_talk
格式化函数
{{formatnum:未格式化的数字}}
{{formatnum:已格式化的数字|R}}
{{formatnum:未格式化的数字|NOSEP}}
简单例子:
  • {{formatnum:987654321.654321}} → 987,654,321.654321
  • {{formatnum:987,654,321.654321|R}} → 987654321.654321

高级例子:

  • {{formatnum:{{formatnum:987654321.654321}}|R}} → 987654321.654321(任何情况下)
  • {{formatnum:00001}} → 00,001
  • {{formatnum:987654321.654321 |NOSEP}} → 987654321.654321

错误的输入会导致无法预测的输出,不论是否有参数2|R

  • {{formatnum:987.654,321}} → 987.654,321
  • {{formatnum:987.654,321|R}} → 987.654321
参数1接受任何阿拉伯数字,按照站点默认区域数字格式用分位符号分组,将其本地化后输出。

参数2有两个可接受字符串:

  1. |R可以使函数的行为倒转,即输入已格式化的数字输出完全无格式数字(只有小数点.,没有其他的格式),可以用在数学计算中。但请注意只有在输入的数字是完全格式化后它的输出才符合预期;
  2. |NOSEP(“无分隔符”)参数会使数位分组分隔符和小数点分隔符不被修改,此时 formatnum 只会在不使用w:zh:印度-阿拉伯数字系统的语言中将数字字符进行转换。NOSEP 参数还会防止出现意外的非标准数字分组。。

注意

  1. 开头的前导零不会被去除,如果你要去除请使用{{#expr:00001}}
  2. 如果输入的数字格式有误,那么输出的数字无法保证格式正确。

如果你真的需要输入一个无法保证格式正确的数字的话,你可以使用{{formatnum:}}两次,但请不要在输入数字可能有数位分组格式的情况下使用这种变通方式,否则分隔符可能会消失或数字无法被格式化。请注意这种方法是非常取巧的,因此它的输出结果可能不可靠。

{{#dateformat:日期}}
{{#formatdate:日期}}
{{#dateformat:日期|格式规则}}
{{#formatdate:日期|格式规则}}
  • {{#dateformat:25 dec 2009}} → 25 dec 2009
  • {{#formatdate:dec 25,2009|dmy}} → dec 25,2009
  • {{#dateformat:2009-12-25|mdy}}12月 25, 2009(本例子中只有这一行合法,mw添加了额外的信息:<span class="mw-formatted-date" title="2009-12-25">12月 25, 2009</span>
  • {{#formatdate:2009 dec 25|ISO 8601}} → 2009 dec 25
参数1接受一个未格式化的日期,按照设置#显示里的“日期格式”设置将其格式化。对于未登陆的读者和未设置日期格式的用户,可以通过参数2指定格式:mdydmyymd(输出的字母全小写)。如果参数1只给出月日,那么只有mdydmy才是有效的格式。如果未指定格式或者格式无效,那么参数1的格式将被指定为输出格式。如果参数1的日期格式无效,那么函数输出参数1的原样。

警告:即使ISO 8601格式要求参数1的日期是公历日期,若参数2指定ISO 8601,函数也能对那些超出通常公历范围的日期进行格式化(例如1583年之前的日期)。不过,函数无法正确转换ISO 8601格式下的负数年份和通常格式下的公元前的年份。

{{lc:字符串}} {{lc:DATA CENTER}} → data center 将字符串完全小写化
{{lcfirst:字符串}} {{lcfirst:DATA center}} → dATA center 将字符串首字母小写化
{{uc:字符串}} {{uc:text transform}} → TEXT TRANSFORM 将字符串完全大写化
{{ucfirst:字符串}} {{ucfirst:text TRANSFORM}} → Text TRANSFORM 将字符串首字母大写化
{{padleft:原字符串|补足后的字符串长度}}
{{padleft:原字符串|补足后的字符串长度|补足用的字符串}}
{{padleft:xyz|5}} → 00xyz
{{padleft:xyz|5|_}} → __xyz
{{padleft:xyz|5|abc}} → abxyz
{{padleft:xyz|7|abc}} → abcaxyz
{{padleft:xyz|2}} → xyz
{{padleft:|4|xyz}} → xyzx
将参数1通过在左侧补上参数3指定的字符串(默认为0)补足到参数2指定的长度,参数3指定的字符串可能被截断以保证补足后的字符串长度满足要求
{{padright:原字符串|补足后的字符串长度}}
{{padright:原字符串|补足后的字符串长度|补足用的字符串}}
{{padright:xyz|5}} → xyz00
{{padright:xyz|5|_}} → xyz__
{{padright:xyz|5|abc}} → xyzab
{{padright:xyz|7|abc}} → xyzabca
{{padright:xyz|2}} → xyz
{{padright:|4|xyz}} → xyzx
{{padleft:}}近乎一样,只是在右边补足
本地化函数
{{plural:数字|单数形式|复数形式}} {{plural:0|is|are}} → are
{{plural:1*1|is|are}} → is
{{plural:21 mod 10|is|are}} → are
{{plural:{{#expr:21 mod 10}}|is|are}} → is
根据参数1是单数还是复数,输出不同的字符串:单数输出参数2,复数输出参数3。判断是否单复数的标准是{{#switch: 1 | {{{1}}} | {{#expr: {{{1}}} }} = true | #defualt = false}}
{{gender:指定用户名|男性时的文本|女性时的文本|未选择性别时的文本}}
{{gender:|男性时的文本|女性时的文本|未选择性别时的文本}}
{{gender:.|男性时的文本|女性时的文本|未选择性别时的文本}}
(根据指定用户的设置而定) 根据指定的用户的设置#用户资料的“语言”设置中的性别部分,返回该性别对应的文本。

注意

  1. 如果参数4未给出,那么当用户设置为“中性”时使用男性文本;
  2. 如果参数3未给出,那么当用户设置为“女性”时使用男性文本;
  3. 如果参数1为空,则指定当前用户(未登陆读者使用站点默认设置),但这种方式只能在MediaWiki名字空间下的页面使用;
  4. 如果参数1为.,则使用站点默认设置。
{{int:信息名称}} {{int:edit}} → 编辑
{{int:editsectionhint|MediaWiki}} → 编辑小节:MediaWiki
返回指定信息的界面语言变种翻译。可以在MediaWiki:信息标准名(en-US)/界面语言变种里找到,亦可以修改。

对于部分信息,可以提供参数给它们,它们可以通过$1、$2……获取这些参数,在第二个例子里,MediaWiki替换了$1。

这种用法相较于{{MediaWiki:信息名称}}好处是可以根据用户的界面语言变种的变化而变化,也比模板更快加载,但它不会在编辑框下方的“该页面使用的模板:”中出现。如果对应信息不存在的话,会以⧼unexist⧽出现.

特殊嵌入
{{:(主)名字空间页面名}} (主名字空间页面) 通过:将名字空间强制指定为(主),从而嵌入(主)名字空间的页面
{{msg:与某一魔术字重名的模板名}}
{{raw:与某一魔术字重名的模板名}}
(模板正常渲染内容) {{Tempate:与某一魔术字重名的模板名}}一样可以避免魔术字与模板名冲突,而直接嵌入模板
{{msgnw:模板名}} {{msgnw:tl}} → &#123;&#123;{{#if:{{{3|}}}|{{{3|}}}:|}}[[Template:{{{1}}}|{{{1}}}]]{{#if:{{{2|{{{arg|}}}}}}|{{!}}{{{2|{{{arg}}}}}}}}&#125;&#125;<noinclude>

{{Documentation}} <!-- 请在将分类与跨语言连结增加在 /doc 子页面 --> [[Category:内部链接模板]] </noinclude>

把模板的源码以纯文本形式输出,自带nowiki效果
{{subst:模板名}} (模板的正常渲染内容,而模板源码在替换完参数,删去<noinclude/>内容后粘贴到页面源码中) 把模板的源码嵌入到页面源码中,参见Help:替换引用
{{safesubst:模板名}} (模板的正常渲染内容。当上层模板是被正常嵌套时按正常方式被嵌套;而当上层模板是被替换引用时,模板源码在替换完参数,删去<noinclude/>内容后粘贴到页面源码中)
运算与逻辑判断(来自扩展:解析器函数)
{{#expr: 数学表达式 }} {{#expr: 1 and -1 }} → 1

{{#expr: ---...---1}}(95个“-”) = -1

本函数计算并返回数学表达式的结果,你可以使用+、-、*、/来进行计算。本函数将e(自然对数的底数)、pi(π)作为常数使用。本函数支持的运算符如下所示:
运算符 名称 优先级 元数 结合性 样例
+ 9 1 {{#expr: + 7}} = 7
- 9 1 {{#expr: - 7}} = -7
not 逻辑非 9 1 {{#expr: not 7}} = 0
* 8 2 {{#expr: 30 * 7}} = 210
/ 8 2 {{#expr: 30 / 7}} = 4.2857142857143
div 8 2 {{#expr: 30 div 7}} = 4.2857142857143
mod 8 2 {{#expr: 30 mod 7}} = 2
+ 6 2 {{#expr: 30 + 7}} = 37
- 6 2 {{#expr: 30 - 7}} = 23
round 舍入 5 2 {{#expr: 30 / 7 round 7}} = 4.2857143
= 等于 4 2 {{#expr: 30 = 7}} = 0
< 小于 4 2 {{#expr: 30 < 7}} = 0
> 大于 4 2 {{#expr: 30 > 7}} = 1
<= 小于等于 4 2 {{#expr: 30 <= 7}} = 0
>= 大于等于 4 2 {{#expr: 30 >= 7}} = 1
<> 不等于 4 2 {{#expr: 30 <> 7}} = 1
!= 不等于 4 2 {{#expr: 30 != 7}} = 1
and 逻辑与 3 2 {{#expr: 30 and 7}} = 1
or 逻辑或 2 2 {{#expr: 30 or 7}} = 1
abs 绝对值 10 1 {{#expr: abs 2}} = 2
{{#expr: abs -2}} = 2
^ 乘方 10 1 {{#expr: 2^3}} = 8
sqrt 开方 10 1 {{#expr: sqrt9}} = 3
ln 对数 10 1 {{#expr: ln10}} = 2.302585092994
log28(换底):{{#expr: ln8 div ln2}} = 3
支持:
sin、cos、tan
不支持:
csc、sec、cot
三角函数 10 1 弧度制:{{#expr:sin45}} = 0.85090352453412
角度制:{{#expr:cos(45 * pi div 180)}} = 0.70710678118655
支持:
asin、acos、atan
不支持:
acsc、asec、acot
反三角函数 10 1 弧度制:{{#expr:sin45}} = 0.5235987755983
角度制:{{#expr:(asin 0.5)*180/pi}} = 30

注意:

  1. round运算对运算数正负,位数正负有不同表现:
    • {{#expr: 999 * 999 round -2}} → 998000
    • {{#expr: 999 * 999 round -20}} → 0
    • {{#expr: 999 * 999 round -2.9}} → 998000(这是十分危险的作法,不推荐使用)
  2. 逻辑运算符把假映射为0,把真映射为非0,且返回值只有0(假)或1(真)。
  3. 同一表达式中先计算高优先级运算。括号优先级高于一切。
  4. 浮点误差有可能造成某些运算的不可预料的结果,特别是最后几位数字的不精确。因此在使用此函数进行非整数运算时,注意不要进行比较运算。
  5. 表达式的返回值可能是无法再计算的值(比如用科学计数法表示的数:{{#expr: 100000000000000000}} → 1.0E+17),或者有一部分有效数字没有显示出来。此时该值相当可能难以运算,因此在使用此函数进行运算时,须注意这些问题。

当表达式有误时函数会返回一个错误信息,此时无法再继续计算,请注意。

{{#if: X | A | B }} {{#if: X | A | B }} → A
{{#if: | A | B }} → B
{{#if: | A }}
该函数用于条件逻辑判断:
  • 如果X处为非空字符串(忽略前导后缀的空格)那么执行A(以wikitext格式解析);
  • 如果X处为空或只有空格那么执行B(以wikitext格式解析);
    • 如果B被省略则输出为空。
{{#ifeq: X | Y | A | B }} {{#ifeq: 1 | 0 | A | B }} → B
{{#ifeq: 1 | 1 | A | B }} → A
该函数用于条件逻辑判断:
  • 如果X == Y(忽略前导后缀的空格)那么执行A(以wikitext格式解析);
  • 否则执行B(以wikitext格式解析);
    • 如果B被省略则输出为空。

注:{{#if: X | A | B }} == {{#ifeq: X | | A | B }}

{{#iferror: X | A | B }} {{#iferror: <span class="error"></span> | error | correct}} → error
{{#iferror: I'm fine. | error}} → I'm fine.
{{#iferror: {{#rel2abs: ../../../../quok | Help:Foo/bar/baz}}}}
该函数用于条件逻辑判断:
  • 如果X包含class="error"那么执行B(以wikitext格式解析);
    • 若B被省略则输出X;
  • 否则执行A(以wikitext格式解析);
    • 如果A被省略则输出为空。

该函数相当适合于执行可能会报错的其他的解释器函数(比如#expr,#time和#rel2abs)、隐藏模板错误(比如模板循环和模板递归)以及隐藏一些其它的解释器“软错误”(如Lua模块、Widget等)。

{{#ifexist: 《页面标题》 | A | B }} {{#ifexist: Main Page | A | B }} → A
{{#ifexist: 肯定不存在的标题 | A | B }} → B
{{#ifexist: 肯定不存在的标题 | A }}
{{#ifexist: File:Box-1.png | A | B }} → B
{{#ifexist: Image:Box-1.png | A | B }} → B
{{#ifexist: Media:Box-1.png | A | B }} → A
[高开销] 该函数用于条件逻辑判断:
  • 如果《页面标题》对应的页面存在,那么执行A(以wikitext格式解析);
  • 否则执行B(以wikitext格式解析);
    • 如果B被省略则输出为空。

注意:

  1. 如果某个页面A(例如本页面)使用了该函数检查另一个页面B(例如“肯定不存在的标题”)是否存在,那么Special:链入页面就能查询到A链接到了B(例如Special:链入页面/肯定不存在的标题),Special:需要的页面也会显示B需要被创建;
  2. 如果要检查萌娘共享里的文件,则需要使用Media:前缀。
    • 使用File:Image:前缀时只检查本地wiki(萌百)上有无对应页面(例如File:Box-1.png
    • 从这里也能看出,该函数只检查页面是否存在,不考虑页面是否有内容亦不考虑页面是否按共享文件页面显示(如上所示,File:Box-1.png为蓝链而{{#ifexist: File:Box-1.png | A | B }}却仍然返回B)
{{#ifexpr: Fx(表达式) | A | B }} {{#ifexpr: 1+1 | A | B }} → A
{{#ifexpr: 1-1 | A | B }} → B
{{#ifexpr: 1-1 | A }}
该函数用于条件逻辑判断:
  • 如果Fx != 0,那么执行A(以wikitext格式解析);
  • 否则执行B(以wikitext格式解析);
    • 如果B被省略则输出为空。

注:{{#ifexpr: Fx(表达式) | A | B }} == {{#ifeq: {{#expr: Fx(表达式)}} | 0 | B | A }}

{{#switch: X | Y = A | #default = B}}
{{#switch: 1
| 0 = A
| 1 = B
| #default = C
}}

→ B

{{#switch: 2
| 0 = A
| 1 = B
| C
}}

→ C

该函数用于条件逻辑判断:
  • 对于输入值X,函数会与每一个预设值Y做比较,如果相同(不考虑前导后缀空格)则执行对应结果(以wikitext格式解析);
    • 预设值与结果以=连接,作为参数提交给函数;
    • 如果预设值没有对应的结果则会将后面的第一个结果加以执行(例如:{{#switch: X | Y | Z = 1}}X == Y时输出1);
  • 如果没有任何一个预设值与输入值相同,则执行#default给出的默认结果;
    • 可以不设定默认结果;
    • 可以省略#default=,即用最后一个没有等号的参数作为默认值。

注意: 当一个参数没有带有=时,该参数会依照下列逻辑被分类:

  • 如果该参数不是最后一个没有等号的参数,那么它将被作为预设值考虑;
  • 否则它将被作为默认结果考虑。
{{#time: 格式参数 }}
{{#time: 格式参数 | 时间参数 }}
{{#time: 格式参数 | 时间参数 | 语言代码}}
{{#time: 格式参数 | 时间参数 | 语言代码 | 是否使用本地时区}}
{{#time: Y/m/d}} → 2020/02/19
{{#time: Y/m/d|2017-01-04}} → 2017/01/04
{{#time: F d H:i:s|+1 second}} → 2月 19 16:48:33
{{#time: F d H:i:s|+1 second|en}} → February 19 16:48:33
{{#time: F d H:i:s|+1 second|zh|1}} → 2月 20 00:48:33
该函数用来输出时间:
  • 格式参数用于指定输出的时间的格式,下表以样例时间为例说明各格式参数的作用。特别注意:系统默认时区为UTC+0,所以以下结果默认以协调世界时为依据,中国标准时间仅供本地时间对应,更改时区的办法参见表格后的说明部分。此处只列举常见的参数,更多参数请浏览帮助:扩展:解析器函数##time
    样例时间
    协调世界时 (UTC) 2020年2月19日(星期三)16时48分32秒
    中国标准时间 (CST) 2020年2月20日(星期四)00时48分32秒
    格式参数 说明 显示结果
    A 根据时间是上午还是下午,输出AM或PM PM
    a 根据时间是上午还是下午,输出am或pm pm
    c 输出长日期(ISO 8601格式) 2020-02-19T16:48:32+00:00
    D 星期数,以一个汉字显示
    d 日期日数,补足前导0 19
    F或M 月份,以当前语言输出 2月
    G或g 当前UTC时间小时数 16
    H或h 小时数,补足前导0 16
    i 分钟数,补足前导0 48
    j 日期日数 19
    L 日期星期数,1位数字,星期日为1,星期六为7 1
    l 日期星期数,3位汉字 星期三
    m 月份数,补足前导0 02
    N 星期数,星期一为1,星期日为7 3
    n 月份数 2
    r 英文长日期格式(ISO 8601格式) Wed, 19 Feb 2020 16:48:32 +0000
    s 秒数 32
    t 该月天数 29
    U UNIX时间戳 1582130912
    W 日期周数,显示日期为当年第几周,补足前导0 08
    w 星期数,星期日为0,星期六为6 3
    Y 日期年份,4位数字 2020
    y 日期年份,2位数字 20
    z 显示日期为当年第几日(1月1日是第0天) 49
  • 时间参数可以使用绝对时间,如“2008-12-31 23:59:59”,也可以使用相对时间,如“+7 days”或者“-5 hours”得到默认时间7日之后或默认时间5小时之前的时间。也可以二者混合使用,比如{{#time:Y-m-d H:i:s|2001-2-3 04:05:06 +1 year +2 months +3 days +4 hours +5 minutes +6 seconds}} → 2002-04-06 08:10:12
    时间参数也可以使用Unix时间戳,这需要在时间戳前添加@,如{{#time:Y-m-d H:i:s|@981144306}} → 2001-02-02 20:05:06,但如果在非Unix时间戳前添加@则很可能导致一个错误,详见帮助:扩展:解析器函数##time
  • 语言代码可以指定为mw支持的任意语言,例如en、zh-hant、ja之类的
  • 是否使用本地时区参数将会被传递给PHP解释器,若被解释为true则使用萌百本地时区(CST)

注意:

  • 如果想要输出字母本身,而该字母又是属于格式参数的一种时,可以用英文双引号包裹:{{#time: "Y/m/d" == Y/m/d}} → Y/m/d == 2020/02/19
  • 本函数支持的时间范围为1年1月1日~9999年12月31日,但特定的时间范围会有奇怪的结果,详见帮助:扩展:解析器函数##time
{{#timel: 格式参数 }}
{{#timel: 格式参数 | 时间参数 }}
{{#timel: 格式参数 | 时间参数 | 语言代码}}
{{#timel: Y/m/d}} → 2020/02/20
{{#timel: Y/m/d|2017-01-04}} → 2017/01/04
{{#timel: Y/m/d H:i:s|+1 second}} → 2020/02/20 00:48:33
{{#timel: Y/m/d H:i:s|+1 second|en}} → 2020/02/20 00:48:33
该函数与{{#time}}几乎一致,除了没有参数4并且强制使用本地时区以外。
变量(来自扩展:Variables)
{{#vardefine: 变量名 | 变量值}} - 变量值 赋给一个名为 变量名 的变量
{{#vardefineecho: 变量名 | 变量值}} {{#vardefineecho: hello | world}} → world 变量值 赋给一个名为 变量名 的变量,并输出 变量值
{{#var: 变量名}}
{{#var: 变量名 | 默认值}}
{{#var: hello}} → world
{{#var: foo | no-op}} → no-op
输出名为 变量名 的变量的值,如果没有名为 变量名 的变量则输出默认值
{{#varexists: 变量名}}
{{#varexists: 变量名 | 存在时的返回值}}
{{#varexists: 变量名 | 存在时的返回值 | 不存在时的返回值}}
{{#varexists: hello}} → 1
{{#varexists: foo | exist}}
{{#varexists: foo | exist | does not exist}} → does not exist
判断是否存在一个名为 变量名 的变量,若存在则返回 存在时的返回值(默认为 1),弱不存在则返回 不存在时的返回值(默认为
{{#var_final: 变量名}}
{{#var_final: 变量名 | 默认值}}
{{#var_final: index}} → 5
  • 该变量在下一行({{#while:)才被赋值,可用来观察效果

{{#var_final: foo | <u>no-op</u>}}no-op

在解析器解析到该魔术字时,先展开 默认值 对应的 wikitext,然后等待解析器解析完全文:
  • 若解析完全文后存在一个名为 变量名 的变量则输出该变量名(这意味着该魔术字不能用作其他模板/魔术字的参数);
  • 若解析完全文后发现不存在名为 变量名 的变量则输出 默认值

注意:不论 默认值 是否用得上,其内的 wikitext 都会被执行,您可以在沙盒里测试以下代码并观察页面标题:{{#vardefine: hello | world}}{{#var_final: hello | {{DISPLAYTITLE: var_final 测试}}}}

循环(来自扩展:Loops)
{{#while: | 条件 | 语句}}
{{#vardefine: index | 0 }}{{#while:
 | {{#ifexpr: {{#var: index }} < 5 | true }}
 | <nowiki></nowiki>
* {{#var: index }}{{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }}
}}

  • 0
  • 1
  • 2
  • 3
  • 4
条件 不为空时执行 语句

注意:扩展:Loops会对所有传入的参数值去除开头结尾的空白字符(包括空格、换行等)后再处理,如果你不想你的换行被删除请使用 <nowiki></nowiki>放在换行处(如例子所示),下同。

{{#dowhile: | 条件 | 语句}}
{{#vardefine: i | 99 }}{{#dowhile:
 | {{#ifexpr: {{#var: i}} < 5 | true }}
 | <nowiki></nowiki>
* {{#var: i}}{{#vardefine: i| {{#expr: {{#var: index }} + 1 }} }}
}}

  • 99
先执行一次 语句,然后当 条件 不为空时继续执行语句(注意例子里的初始值)
{{#loop: 变量名 | 初始值 | 循环次数 | 语句}}
{{#loop: count
 | 1
 | 4
 | <nowiki></nowiki>
* This is round {{#var: count }} and we have {{#expr: 4 - {{#var: count }} }} more to go
}}

  • This is round 1 and we have 3 more to go
  • This is round 2 and we have 2 more to go
  • This is round 3 and we have 1 more to go
  • This is round 4 and we have 0 more to go
循环执行语句:
  1. 初始值 赋给一个名为 变量名 的变量;
  2. 然后开始循环,次数为 循环次数 的绝对值:
    1. 执行 语句
    2. 循环次数 为正整数,则将名为 变量名 的变量的值增加 1;若 循环次数 为负整数,则将名为 变量名 的变量的值减少 1。
{{#forargs: 变量名前缀 | 索引变量名 | 值变量名 | 语句}} 若模板 Template:Loops Test 的内容如下:
{{#forargs: arg
 | key
 | value
 | <nowiki></nowiki>
* {{#var: key }} = {{#var: value }}
}}
那么若调用如下代码:
{{Loops Test
 | arg1=val1
 | spam=spammity
 | arg5=val5
 | argument=value
}}

则输出:

  • 1 = val1
  • 5 = val5
  • ument = value
遍历参数:
  • 若参数名开头为 变量名前缀(如例子中的arg1argument等):
    1. 将切除开头的 变量名前缀 后的参数名赋给名为 索引变量名 的变量;
    2. 将该参数的值赋给名为 值变量名 的变量;
    3. 执行语句。
{{#fornumargs: 索引变量名 | 值变量名 | 语句}} 若模板 Template:Loops Test 的内容如下:
{{#fornumargs: number
 | value
 | <nowiki></nowiki>
* {{#var: number }} = {{#var: value }}
}}
那么若调用如下代码:
{{Loops Test
  |     Alfa
  | B = Bravo
  |     Charlie
  | 5 = Echo
}}

则输出:

  • 1 = Alfa
  • 2 = Charlie
  • 5 = Echo
遍历参数:
  • 若参数名为纯数字(未指定参数名的参数按其出现的先后顺序编号(只在未指定参数名的参数范围内编号,如例子中的Charlie对应的是2)):
    1. 将参数名赋给名为 索引变量名 的变量;
    2. 将该参数的值赋给名为 值变量名 的变量;
    3. 执行语句。
杂项
{{#language:语言代码}}
{{#language:语言代码|目标语言代码}}
{{#language:zh-cn}} → 中文(中国大陆)‎
{{#language:zh-cn|en-us}} → 中文(中国大陆)‎
以参数2的语言代码指定的语言(没有则以参数1的)输出参数1的语言代码对应的语言全名
{{#special:特殊页面名}} {{#special:watchlist}} → Special:监视列表 输出指定标准名称的特殊页面的本地化名。

可以在函数名后加e以输出经MediaWiki URL编码规则编码后的页面名:

  • {{#speciale:watchlist}} → Special:%E7%9B%91%E8%A7%86%E5%88%97%E8%A1%A8
{{#tag:标签名称|内容|属性1=属性值1|属性2=属性值2|……}} {{#tag:div|右浮动|style="border: 1px gray solid; float: right; clear: both; padding: 1em;"}}
右浮动
输出一个元素的HTML源码,参数1为其标签名,参数2为其内容,参数3及之后为其属性值对。请不要向参数1传入自闭合标签名,如br、img、hr等。

内容中的wikitext会在tag函数渲染之前完成渲染,并与往常一样阻止不受信任的代码渲染。如果内容需要为空,则参数2必须为空,而不是省略

{{#invoke:模块名|函数名|参数1|参数2|……}} (根据指定模块输出) Lua模块的调用方法
{{DISPLAYTITLE:标题}}
{{DISPLAYTITLE:标题|noerror}}
{{DISPLAYTITLE:标题|noreplace}}
- 本函数用以改变当前页面的标题的格式做出变换,该函数无法做出修改标题的行为,只能做出例如改变大小写、下划线替代空格等的修改。

参数1为“noerror”或“noreplace”时,会阻止由于使用多个该函数而导致的错误抛出。

{{DEFAULTSORT:分类索引}}
{{DEFAULTSORTKEY:分类索引}}
{{DEFAULTCATEGORYSORT:分类索引}}
{{DEFAULTSORT:分类索引|noerror}}
{{DEFAULTSORT:分类索引|noreplace}}
- 本函数用以改变当前页面在分类中的索引,比如{{DEFAULTSORT:A}}会把页面分到A部分下。

参数1为“noerror”或“noreplace”时,会阻止由于使用多个该函数而导致的错误抛出。

参见