帮助:解析函数
本页旨在介绍BWIKI支持的解析函数,针对平台特性和中文环境提供简单易懂的说明和用例。
解析函数(Parser function)是一种魔术字(Magic word),它动态地处理数据和逻辑,能根据不同的输入和条件,输出不同内容。如条件判断、数学计算、字符串处理和时间处理等等。 用户能用它自由的实现各种功能,如编写能自动更新的内容、简化复杂结构的实现或设计灵活强大的模板。
BWIKI支持192个解析函数,它们来自Mediawiki和第三方扩展。特殊:版本页面列出了所有扩展及其版本,点击扩展名可以访问扩展主页和文档(部分BWIKI开发/魔改的扩展可能无法找到文档,请参考本页)。特殊:版本页面还列出了软件版本、支持的解析函数和扩展标签等等信息。
基本格式:
- {{函数名:参数1|参数2|...|参数n}}
其中:
- {{ 和 }} 表明这是一个模板或魔术字。
- 函数名是解析函数的名称,大部分函数以井号开头。
- 参数1、参数2、参数n是参数。多个参数由竖线 | 分割。参数也是wikitext,可以包含模板或解析函数等等。Wiki解析器会优先运算、展开参数中的代码(wikitext),这与数学公式中的括号相似,从内到外逐级展开。
注意事项:
- 参数1必定会自动被展开,传入解析函数的是展开结果。在参数1中使用nowiki标签很可能导致非预期行为。
- 所有参数都会被trim(移除头尾的空白字符,如空格和换行)后传入解析函数。因此如需传入空白字符需要用nowiki标签包裹参数。比如空格<nowiki> </nowiki>
- 在参数中使用某些字符需要“转义”。如空格就需要<nowiki> </nowiki>;竖线|,被用于分隔两个参数,此时需要用“{{!}}”。
- 第三方扩展提供了大量解析函数,它们的细节特性可能不同:
A
anchorencode
将文本编码为锚点格式。MediaWiki原生支持。
常用于在模板中处理锚点相关的参数。创建链接时,可保证锚点被正确编码。
- 官方文档:帮助:魔术字 - URL数据
- 完整文档:帮助:解析函数/anchorencode - 更多示例、背景知识、底层代码和实战用例
语法
{{anchorencode:文本}}
示例
示例 | 效果 | |
---|---|---|
基本 |
|
|
部分符号被编码 |
|
|
编码锚点 | [http://mw.org/page#{{anchorencode:URL data}} 这个页面]
|
这个页面 |
需要但未编码锚点 | [http://mw.org/page#URL data 这个页面]
|
data 这个页面(解析错误) |
用于模板 | 创建锚点<span id="{{anchorencode:{{{1|}}}}}"></span>
|
<span id="URL_data"></span>
|
注:对一个确定的URL,手动编码锚点当然可行。因此本函数更多地用于模板中,比如处理参数中未知的锚点参数。
arraydefine
定义临时存储数据的数组,以便后续使用。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
此函数需要输入数据字符串和分隔符,用分隔符切分字符串来构造数组。当然,数据字符串可以是固定值,也可以来自模板或SMW查询结果。
基于Arrays扩展,用户能便捷的构造表格、列表和图鉴等各类重复性结构(当然也能用Loops扩展、Lua模块等等)。
- 官方文档:Extension:Arrays - arraydefine
- 完整文档:帮助:解析函数/arraydefine - 更多背景知识、底层代码和实战用例。
语法
{{#arraydefine: 数组名 | 数据字符串 }}
- 默认以逗号“,”作为分割符,将数据字符串拆分危数组元素。
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 }}
- 分隔符:可指定分隔符替代默认值,支持正则表达式。
{{#arraydefine: 数组名 | 数据字符串 | 分隔符 | 选项 }}
- 选项 (可选) 是一个匿名字符串参数,支持unique、sort、print。
- 多个选项参数以英文逗号分隔,即“键=值, 键=值”,例如:“sort=desc, print=list”、“unique, print=list”
- unique:去重
- sort:排序,支持 none(默认),desc,asce/asc,random,reverse
- none - 不排序(默认)
- desc - 降序(基于PHP函数,参见 https://php.net/function.sort )
- asce/asc - 升序(参见 https://php.net/function.rsort )
- random - 随机(参见 https://php.net/function.array-rand )
- reverse - 倒序(参见 https://php.net/function.array-reverse )
- print 输出格式: list 或 pretty
- list: a、b、c
- pretty: a、c和c
示例
{{#arraydefine:a|red}}
→ 定义数组a
,只有1个元素:red
{{#arraydefine:b|orange,red ,yellow, yellow}}
→ 定义数组b,有4个元素(分隔符没有指定,默认为逗号):orange、red、yellow、yellow
{{#arraydefine:c}}
→ 定义空数组c:{{#arraydefine:d|apple, pear; orange|/\s*[;,]\s*/}}
→ 定义数组d,分隔符是正则表达式。d有3个元素:apple、pear、orange
{{#arraydefine:e|orange,red ,yellow, yellow|,|unique,sort=desc, print=list}}
→ 定义数组e,以“,”为分隔符,数组元素去重,降序排列,并作为列表输出:yellow、red、orange
arraydiff
计算差集。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
多个数组的差集,就是从第一个数组中去除所有存在于其他数组中的元素,得到的结果数组。参见:PHP array_diff 函数MediaWiki和Arrays扩展使用PHP语言开发,因此其底层行为取决于PHP的特性。
例如对集合 [math]\displaystyle{ A }[/math]、[math]\displaystyle{ B }[/math] 和 [math]\displaystyle{ C }[/math],它们的差集可以表示为 [math]\displaystyle{ A - B - C }[/math],即从[math]\displaystyle{ A }[/math] 中去除存在于 [math]\displaystyle{ B }[/math] 和 [math]\displaystyle{ C }[/math] 中的元素。
语法
{{#arraydiff: 结果数组名 | 数组1 | 数组2 | ... | 数组N }}
示例
- 先定义数组:
{{#arraydefine:a|2,1,1,3,blue,apple,apple}}{{#arraydefine:b|2,2,blue}}{{#arraydefine:c|3,blue}}
- [math]\displaystyle{ A - B }[/math] :
{{#arraydiff:x | a | b }}
→1、1、3、apple、apple
- [math]\displaystyle{ A - C }[/math] :
{{#arraydiff:x | a | c }}
→2、1、1、apple、apple
- [math]\displaystyle{ A - B - C }[/math] :
{{#arraydiff:x | a | b | c }}
→1、1、apple、apple
- [math]\displaystyle{ A - C - B }[/math] :
{{#arraydiff:x | a | c | b }}
→1、1、apple、apple
底层代码和实战用例,请参阅帮助:解析函数/arraydiff。
arrayindex
输出一个数组指定位置的值。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
语法
{{#arrayindex: 数组名 | 序号 | 默认值 }}
- 序号,一个数字。从0开始计数(第一个元素的序号是0),负数用于从后向前定位(-1代表最后一个元素)
- 如果数组名或序号无效,函数将输出默认值(默认为空字符串)。
- 数组名无效:不存在该数组。如在定义数组前使用它的值
- 序号无效是指:找不到对应位置的值。这可能是序号非数字、越界(超过实际数据范围)导致
示例
{{#arrayindex:a |2 }}
→ a数组的第3个元素{{#arrayindex:b |-1 }}
→ b数组的最后一个元素{{#arrayindex:c |foo |bad value }}
→ 因为序号无效,输出默认返回值
关于底层代码和实战用例,请参阅帮助:解析函数/arrayindex。
arrayintersect
计算多个数组的交集。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
两个集合 [math]\displaystyle{ A }[/math]、[math]\displaystyle{ B }[/math] 的交集,指 [math]\displaystyle{ x \in A }[/math] 且 [math]\displaystyle{ x \in B }[/math],下文记为 [math]\displaystyle{ A ∩ B }[/math]。
结果数组可能包含重复值,其元素顺序与第一个数组相同;从结果看,可以视为从第一个集合中移除所有其他集合都不存在的元素。
语法
{{#arrayintersect:新数组名 | 数组1 |数组2 |... |数组n }}
此函数将计算 数组1 ∩ 数组2 ∩ ... ∩ 数组n
,并将结果存入数组 新数组名
。
示例
- 有数组a:
{{#arraydefine:a|orange, orange, red, blue}}
- 有数组b:
{{#arraydefine:b|red, red, red, red, orange, yellow, yellow}}
- 有数组c:
{{#arraydefine:c|blue, red}}
- a ∩ b :
{{#arrayintersect:x|a|b}}{{#arrayprint:x}}
→orange、orange、red
- b ∩ a :
{{#arrayintersect:y|b|a}}{{#arrayprint:y}}
→red、red、red、red、orange
- a ∩ b ∩ c :
{{#arrayintersect:z|a|b|c}}{{#arrayprint:z}}
→red
关于底层代码和实战用例,请参阅帮助:解析函数/arrayintersect。
arraymap
arraymap用于分割字符串并以指定格式输出。出自扩展 Page Forms。
语法
{{#arraymap:字符串|分隔符|别名|输出wikitext|输出分隔符|输出连接词}}
- 字符串:分割的目标
- 分隔符:用于分割字符串。默认值为
,
。为空时将逐字符分割字符串,这会让结果包含很多分隔符。 - 别名:在
输出wikitext
中作为占位符。 - 输出wikitext:包含别名的wikitext,别名将被替换为子字符串多次输出
- 输出分隔符:可选,默认为英文逗号
,
。在两个输出wikitext
之间会被插入输出分隔符 - 输出连接词:可选。在最后一个“输出wikitext”前,将使用此连接词替代
输出分隔符
示例
- 指定格式:
{{#arraymap:a_b_c | _ | @ | '''@''' | + }}
→a+b+c
- 指定格式:
{{#arraymap:a_b_c | _ | @ | 有'''@'''的wikitext | …… }}
→有a的wikitext……有b的wikitext……有c的wikitext
- 指定格式和连接词:
{{#arraymap:托奇_环理_小满_秘银_从云_辰纱 | _ | @ | '''@''' | , |和 }}一起开会
→ 托奇,环理,小满,秘银,从云 和 辰纱一起开会 - 奇怪的连接词:
{{#arraymap:点点,丩卩夂忄,马小萌,Lu | , | @ | {{key|@}} | 、 |同时发现了}}
→点点、丩卩夂忄、马小萌 同时发现了 Lu
- 批量处理:
{{#arraymap:apple, banana, cherry | , | @ | {{ucfirst:@}}}}
→Apple, Banana, Cherry
- 筛选:
{{#arraymap: 2, 7, 4, 9, 3 |,|@|{{#ifexpr: @ > 5 | @ }} }}
→7, 9
更多用法
- 字符串可以来自SMW查询,模板参数或其他表达式
- 这可以在不额外使用模板的情况下,格式化SMW查询结果。
- 比如:
{{#arraymap:一个模板用于获取数据|分隔符|别称|{{一个模板|别称|其他参数}}}}
- 比如:
{{#arraymap:SMW查询|分隔符|别称|简单的wikitext}}
关于底层代码和实战用例,请参阅帮助:解析函数/arraymap。
arraymaptemplate
分割字符串,并以指定模板格式逐一输出。其行为与arraymap相似。出自扩展 Page Forms。
- 说明
- 有些类型的映射非常复杂,不能放在
#arraymap
函数中。为此,您可以使用类似的#arraymaptemplate
函数。 - 要使用该函数,首先创建一个模板,接收一个字段(模板中应将其称为
{{{1}}}
),并将您想要的映射应用到该字段。然后在主模板字段上应用#arraymaptemplate
,就像使用#arraymap
一样 - 其中 "模板 "是相关映射模板的名称。
语法
{{#arraymaptemplate:字符串|模板名|分隔符|输出分隔符}}
- 字符串:分割的目标
- 模板名:用于格式化输出的模板。被分割的字符将作为参数
{{{1}}}
传入模板 - 分隔符:用于分割字符串
- 输出分隔符:可选,默认为
,
英文逗号,在两个模板输出之间会被插入输出分隔符
示例
要以列表的形式显示作者列表,可以先创建一个名为 "Author"的模板,内容如下:
* {{{1}}}
然后即可使用arraymaptemplate:
{{#arraymaptemplate:托奇、环理、辰纱|Author|、|\n}}
关于底层代码和实战用例,请参阅帮助:解析函数/arraymaptemplate。
arraymerge
合并数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
语法
{{#arraymerge: 新数组 | 数组1 | 数组2 | ... | 数组n }}
合并数组1
、数组2
……数组n
,到新数组
中。
示例
先定义数组abc:
- a:
{{#arraydefine:a|orange}}
- b:
{{#arraydefine:b|red, red}}
- c:
{{#arraydefine:c|blue, blue}}
则:
{{#arraymerge:x|a|b}}
→x = orange、red、red
{{#arraymerge:x|a|c}}
→x = orange、blue、blue
{{#arraymerge:x|a|b|c}}
→x = orange、red、red、blue、blue
关于底层代码和实战用例,请参阅帮助:解析函数/arraymerge。
arrayprint
以指定的格式输出数组内容。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
它支持占位符替换、分隔符设置以及 wikitext 的嵌套解析(如模板、链接等)。
语法
{{#arrayprint: 数组名 | 分隔符 | 占位符 | 输出格式 | 选项 }}
- 数组名: 指定要输出的数组。
- 分隔符:用于分隔多个数组元素的字符串。默认为语言环境的顿号(如中文为 `、`)。支持 HTML 标签(如
<br/>
)。 - 占位符:在
输出wikitext
中占位,每个元素会在占位符的位置输出 - 输出格式:一段wikitext,定义单个数组元素的输出格式。需要包含占位符,否则将直接输出原始值。
- 选项:支持
print=pretty
,将最后一个分隔符
替换为和
示例
先定义数组:{{#arraydefine:b|red, orange, blue}}
示例 | 效果 | |
---|---|---|
基本 | {{#arrayprint:b}} |
red、orange、blue
|
无分隔符 | {{#arrayprint:b | }} |
redorangeblue
|
以换行分隔 | {{#arrayprint:b |<br/> }} |
red orange blue |
wikitext示例 | {{#arrayprint:b | <br/> | @ | @的长度:{{#len:@}} }} |
red的长度:3 orange的长度:6 blue的长度:4 |
wikitext示例 | {{#arrayprint:b | <br/> | @ | {{Color| @ | @ }} }} |
red orange blue |
关于底层代码和实战用例,请参阅帮助:解析函数/arrayprint。
arrayreset
删除数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
用于删除由Arrays扩展定义的数组。
- 官方文档:Extension:Arrays - arrayreset
- 完整文档:帮助:解析函数/arrayreset - 更多示例、背景知识、底层代码和实战用例
语法
- 删除指定数组:
{{#arrayreset: 数组名1 |数组名2 | ... | 数组名n }}
- 删除所有数组:
{{#arrayreset:}}
示例
- 有数组a, b, c:
{{#arraydefine:a|orange, red}} {{#arraydefine:b|111, 22222}} {{#arraydefine:c}}
- 他们的Size为:a (size=2)、b (size=2)、c (size=0)和不存在的d (size=)
- 现在删除a:
{{#arrayreset:a}}
- 再次查看Size:a (size=)、b (size=2)、c (size=0)和不存在的d (size=)
- 容易看出,一个空数组c的size是0,而被清除后的数组a的size是空,与不存在的d一致,可以验证a确实被删除了。
arraysearch
搜索数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
对于一个数组,获取指定值首次出现的位置(从0开始)。没有则返回空。
能额外指定搜索开始位置,和搜索成功或失败时的返回值。
- 官方文档:Extension:Arrays - arraysearch
- 完整文档:帮助:解析函数/arraysearch - 更多示例、背景知识、底层代码和实战用例
语法
{{#arraysearch: 数组名 | 搜索值 | 开始位置 | 成功值 | 失败值 }}
示例
定义一个数组b
:{{#arraydefine:b|blue,white,red,white}}
搜索指定元素的位置:
{{#arraysearch:b|white}}
= 1{{#arraysearch:b|white|2}}
= 3{{#arraysearch:b|red}}
= 2{{#arraysearch:b|/r.*/}}
= 2(正则){{#arraysearch:b|blu}}
= (结果为空)
指定成功/失败时的返回值:
{{#arraysearch:b|white|0|yes|no}}
= yes{{#arraysearch:b|yellow|0|yes|no}}
= no
arraysearcharray
数组筛选出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
创建一个新数组,包括指定数组中所有符合条件的元素。搜索条件支持正则表达式。
支持指定搜索起始位置和最大结果数量。当搜索条件是正则时,可以额外指定结果的转换规则。
- 官方文档:Extension:Arrays - arraysearcharray
- 完整文档:帮助:解析函数/arraysearcharray - 更多示例、背景知识、底层代码和实战用例
语法
{{#arraysearcharray:新数组名|原数组名|搜索条件|起始索引|限制数量|转换规则}}
- 新数组名: 将用于保存筛选结果。
- 原数组名: 目标数组。
- 搜索条件: 正则表达式或字符串搜索值。
- 起始索引: 从目标数组的指定位置开始搜索。
- 限制数量: 限制返回结果的数量。不限制可以留空或填-1。
- 转换规则: 可选参数,对搜索结果进行转换,如果搜索值是正则表达式,transform 可以包含 $n,其中 n 是正则表达式结果中的变量。
示例
定义一个数组a
为:{{#arraydefine:a|apple, bule1, fly, add1,,,, wiki}}
= apple、bule1、fly、add1、、、、wiki
将所有a开头的值存入x | {{#arraysearcharray:x|a|/^a.+/ }} -> apple、add1
|
a开头,从第2项开始 | {{#arraysearcharray:x|a|/^a.+/ | 2}} -> add1
|
a开头,仅限1个 | {{#arraysearcharray:x|a|/^a.+/ | 0 | 1}} -> apple
|
将数字结尾的值存入x | {{#arraysearcharray:x|a|/^.*?(\d+)$/}} -> bule1、add1
|
数字结尾,调整格式 | {{#arraysearcharray:x|a|/^.*?(\d+)$/||| '''pre-$0''' }} -> pre-bule1、pre-add1
|
删除空值 | {{#arraysearcharray:a|a|/\S+/}} -> apple、bule1、fly、add1、wiki
|
arraysize
获取数组的大小(元素个数)。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
数组不存在时返回空字符串,可用于判断数组是否存在。
- 官方文档:Extension:Arrays - arraysize
- 完整文档:帮助:解析函数/arraysize - 更多示例、背景知识、底层代码和实战用例
语法
{{#arraysize: 数组名 }}
示例
{{#arraysize:a}}
→ 数组a中的元素个数{{#if: {{#arraysize:b}} | ''array exists'' | ''array not defined'' }}
→ 检查一个数组是否存在
arrayslice
数组切片。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
从数组的指定位置开始,提取指定长度的片段,存入新数组。
- 官方文档:Extension:Arrays - arrayslice
- 完整文档:帮助:解析函数/arrayslice - 更多示例、背景知识、底层代码和实战用例
语法
{{#arrayslice:新数组名|数组名|偏移量|长度}}
- 新数组名:存放结果
- 数组名:操作目标
- 偏移量:切片起始位置,可以是负数用于向后索引(最后一个元素是-1)
- 长度:要提取的元素数量,默认为后续全部元素。
数组不存在时,返回空字符串
示例
有数组x
为:{{#arraydefine:x|a,b,c,d,e,f,g}}
→ a、b、c、d、e、f、g
{{#arrayslice:y|x|0|2}}
→ a、b{{#arrayslice:y|x|1|3}}
→ b、c、d{{#arrayslice:y|x|-3|2}}
→ e、f{{#arrayslice:y|x|2}}
→ c、d、e、f、g
arraysort
数组排序。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 官方文档:Extension:Arrays - arraysort
- 完整文档:帮助:解析函数/arraysort - 更多示例、背景知识、底层代码和实战用例
语法
{{#arraysort:数组名|排序方式}}
- 排序方式:
- none 不排序
- desc 降序
- asc 升序
- random 随机
- reverse 反序
示例
对于数组:{{#arraydefine:x|1,3,2,7,6,5,11}}
→ 1、3、2、7、6、5、11
{{#arraysort:x}}
→ 1、3、2、7、6、5、11{{#arraysort:x|reverse}}
→ 11、5、6、7、2、3、1{{#arraysort:x|random}}
→ 7、6、3、2、5、11、1{{#arraysort:x|desc}}
→ 7、6、5、3、2、11、1{{#arraysort:x|asc}}
→ 1、11、2、3、5、6、7
- 注意:数组元素类型是字符串,因此顺序排序结果为 1、11、2、3
arrayunion
合并数组。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
将多个数组合并,存到新数组中。合并时不保留重复值。
- 官方文档:Extension:Arrays - arrayunion
- 完整文档:帮助:解析函数/arrayunion - 更多示例、背景知识、底层代码和实战用例
语法
{{#arrayunion: 新数组名 | 数组1 | 数组2 | ... | 数组n }}
示例
有数组:
- x : a、b、c、c
- y : b、c、d
- z : 1、2、3
合并数组:
{{#arrayunion:r|x|y}}
→ a、b、c、d{{#arrayunion:r|y|x|z}}
→ b、c、d、a、1、2、3{{#arrayunion:r|x|z|y}}
→ a、b、c、1、2、3、d
arrayunique
数组去重。出自扩展 Arrays BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
仅保留数组中非重复、非空值。
- 官方文档:Extension:Arrays - arrayunique
- 完整文档:帮助:解析函数/arrayunique - 更多示例、背景知识、底层代码和实战用例
语法
{{#arrayunique:数组名}}
示例
对于数组a:1、1、01、red、blue、、、、red
{{#arrayunique:a}}
→ 1、01、red、blue
ask
查询数据。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
扩展Semantic Mediawiki(双马尾 SMW)提供了强大的数据存储与查询能力(也可用Lua模块,它对于完整、良格式的数据效率更高)。
数据的一处存储到处使用,能极大提升Wiki维护效率。比如一些频繁更新的游戏,少量编辑者就能维护Wiki的基础数据。
但也需注意,SMW很容易造成性能瓶颈,导致页面渲染缓慢、服务器压力增大,极端情况下可能导致服务器暂时瘫痪。
文档
推荐通读灰机wiki的SMW帮助文档,这是最好的中文SMW文档。 需要注意各平台特性不同,如BWIKI不支持MongoDB、SemanticScribunto等特性,灰机与BWIKI平台的SMW限制细节也有不同。配置细节可能随平台负载调整,需以实际表现为准。
- 官方文档:Help:Inline queries
- 实战用例:帮助:解析函数/ask 1000+ 使用#ask的模板,SMW 代码库链接
- 灰机wiki:帮助:Semantic MediaWiki
- 灰机wiki:帮助:Semantic MediaWiki/嵌入式查询
autoedit
创建一个链接,点击自动编辑提交表单。出自扩展 Page Forms。
尚未发现使用此解析函数的BWiki。
B
BASEPAGENAME
获取上级页面名,不含命名空间。MediaWiki原生支持。
仅对启用子页面特性的命名空间生效(主、用户、项目、Mediawiki、模板、帮助、模块空间均支持。注意,文件、分类、Widget等空间不支持)。
- 官方文档:Help:Magic words - Page names
- 完整文档:帮助:解析函数/basepagename - 更多示例、背景知识、底层代码和实战用例
语法
{{BASEPAGENAME}}
针对当前页面{{BASEPAGENAME: 页面名}}
可指定页面
示例
{{BASEPAGENAME}}
→ 解析函数{{BASEPAGENAME:帮助:解析函数/basepagename}}
→解析函数
{{BASEPAGENAME:模板:大模板/中模板/小模板}}
→大模板/中模板
{{BASEPAGENAME:分类:超大分类/大分类/中分类}}
→超大分类/大分类/中分类
(分类空间不支持子页面特性,因此这一页面是独立页面,不被视为“超大分类”的子页面)
BASEPAGENAMEE
获取上级页面名(URL编码),不含命名空间。MediaWiki原生支持。
仅对启用子页面特性的命名空间生效(主、用户、项目、Mediawiki、模板、帮助、模块空间均支持。注意,文件、分类、Widget等空间不支持)。
- 官方文档:Help:Magic words - Page names
- 其他细节与
{{BASEPAGENAME}}
相同,请参考:帮助:解析函数/basepagename - 更多示例、背景知识、底层代码和实战用例
语法
{{BASEPAGENAMEE}}
针对当前页面{{BASEPAGENAMEE: 页面名}}
可指定页面
示例
{{BASEPAGENAMEE}}
→ %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0{{BASEPAGENAMEE:帮助:解析函数/basepagename}}
→%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
{{BASEPAGENAMEE:模板:大模板/中模板/小模板}}
→%E5%A4%A7%E6%A8%A1%E6%9D%BF/%E4%B8%AD%E6%A8%A1%E6%9D%BF
{{BASEPAGENAMEE:分类:超大分类/大分类/中分类}}
→%E8%B6%85%E5%A4%A7%E5%88%86%E7%B1%BB/%E5%A4%A7%E5%88%86%E7%B1%BB/%E4%B8%AD%E5%88%86%E7%B1%BB
(分类空间不支持子页面特性,因此这一页面是独立页面,不被视为“超大分类”的子页面)
bidi
涉及从右到左书写的文字时可使用,正确显示多种书写方向的文本。MediaWiki原生支持。
根据内容自动增加方向性控制字符(从左到右U+202A,从右到左U+202B)。
- 官方文档:Help:Magic_words - Formatting
- 完整文档:帮助:解析函数/bidi - 底层代码
语法
{{bidi:文本}}
示例
{{bidi:text transform}}
→text transform
{{bidi:كتابة عربية}}
→كتابة عربية
{{bidi:كتابة عربيةabc def}}
→كتابة عربيةabc def
C
calendarstartdate
日历起始日期。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
在SMW查询中处理日历格式(calendar format)时使用,用于指定当月日历开始日期。
语法
{{#calendarstartdate:}}
-> 2025-04-27
- 注意其末尾需要冒号。
示例
查询当前月份的活动,以日历格式显示。
{{#ask:
[[Category:Events]]
[[Has date::>{{#calendarstartdate:}}]]
[[Has date::<{{#calendarenddate:}}]]
|?Has date
|format=calendar
|limit=300
}}
calendarenddate
日历届满日期。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
在SMW查询中处理日历格式(calendar format)时使用,用于指定当月日历结束日期。
语法
{{#calendarenddate:}}
-> 2025-06-01
注意
- 其末尾需要冒号。
- 日历结束日期不一定是当月最后一天。因为日历格式以周为单位显示。
示例
查询当前月份的活动,以日历格式显示。
{{#ask:
[[Category:Events]]
[[Has date::>{{#calendarstartdate:}}]]
[[Has date::<{{#calendarenddate:}}]]
|?Has date
|format=calendar
|limit=300
}}
canonicalurl
获取页面完整URL,支持附加请求参数。MediaWiki原生支持。
- 官方文档:Help:Magic_words - URL_data
- 完整文档:帮助:解析函数/canonicalurl - 更多示例、背景知识、底层代码和实战用例
语法
{{canonicalurl: 页面名 | 参数 }}
- 不会校验页面和参数是否存在。
- 多个参数需要手动处理,如示例所示。
- 相关函数是
canonicalurle
,它会编码这些HTML实体:<>"&
→<>"&
示例
- 指定页面链接:
{{canonicalurl: 帮助 }}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9
- 带一个参数:
{{canonicalurl: 帮助 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit
- 带多个参数:
{{canonicalurl: 帮助 | action=edit&arg=233 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit&arg=233
canonicalurle
获取页面完整URL,支持附加请求参数。MediaWiki原生支持。
会编码这些HTML实体:<>"&
→ <>"&
语法
{{canonicalurle: 页面名 | 参数 }}
- 不会校验页面和参数是否存在。
- 多个参数需要手动处理,如示例所示。
- 它会编码这些HTML实体:
<>"&
→<>"&
示例
- 指定页面链接:
{{canonicalurle: 帮助 }}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9
- 带一个参数:
{{canonicalurle: 帮助 | action=edit }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit
- 带多个参数:
{{canonicalurle: 帮助 | action=edit&arg=233 }}
→https://wiki.biligame.com/tools/index.php?title=%E5%B8%AE%E5%8A%A9&action=edit&arg=233
CASCADINGSOURCES
返回特定页面连锁保护的来源页面。
特殊情况:如果保护页面自己嵌入自己,会返回自身。
语法
{{CASCADINGSOURCES}}
{{CASCADINGSOURCES: 页面名 }}
支持指定页面
示例
本Wiki有几个页面被保护了:
- 保护页面示例 被设置了级联保护,让子页面保护页面示例/子页面被级联保护
- 保护页面示例2 被设置了级联保护,且嵌入了保护页面示例/子页面,让这个子页面被级联保护
例子:
{{CASCADINGSOURCES: 帮助:Cascadingsources }}
→(没有被保护)
{{CASCADINGSOURCES: 保护页面示例 }}
→(没有被级联保护)
{{CASCADINGSOURCES: 保护页面示例2 }}
→(没有被级联保护)
{{CASCADINGSOURCES: 保护页面示例/子页面 }}
→保护页面示例|保护页面示例2
(受到两个页面的连锁保护,页面名由竖线隔开)
categorytree
显示分类树,与分类页面相似。出自扩展 CategoryTree。
语法
{{#categorytree:分类|参数1|参数2|...|参数n}}
- 其参数与<categorytree>标签相同,详见文档The Ccategorytree tag
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
示例
{{#categorytree:解析函数}}
concept
定义概念。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
概念(Concept,一个SMW术语),是通过指定条件创建的“动态类别”。可以将概念看作一组预先存储的SMW查询条件,可供SMW查询调用。
- 官方文档:Help:Concepts
- 完整文档:帮助:解析函数/concept
当概念修改后,使用此概念的SMW查询也会更新(类似于更新页面属性后,SMW查询结果会更新)。
比如,有16处SMW查询包含对同一概念的筛选(如“好武器”,指攻击≥70的特品武器),就可以为其定义一个概念。当查询条件需要修改时(比如改为攻击≥75),仅需修改概念就可以完成对这16处查询的更新。
概念需要在概念命名空间定义(比如概念:好武器
),这与模板、Widget等相似。概念定义后,其页面会像分类页面一样展示符合条件的页面列表。
语法
{{#concept:条件|说明}}
- 条件:SMW查询条件,可以包含其他概念。
- 说明:描述概念的文本
示例
比如将攻击≥70的特品武器称为“好武器”。
在 概念:好武器
页面填入以下内容:
{{#concept: [[类型::武器]][[品级::特品]][[攻击::>70]]
| 特品高攻击武器
}}
基于此,可进行查询:
此后,如果对于“好武器”的评判标准改变了,那么只需要修改 概念:好武器 页面,不必逐个寻找、更新SMW查询条件。
contributors
列出指定页面的贡献者。出自扩展 Contributors。
- 官方文档:Extension:Contributors - Parser function
- 完整文档:帮助:解析函数/contributors - 更多示例、背景知识、底层代码和实战用例
每个贡献者用户名都链接到他的用户页面。
对于BWiki,列出的实际上是用户的B站用户ID(bid)。此外,BWiki会在内容页面头部展示贡献者列表,因此 #contributors 的实际价值不高。
这个解析函数没有被标记为高开销,因此有模板使用它来间接判断页面是否存在,这能绕开页面高开销解析函数的数量限制(BWiki目前是100)。不过仍需注意,此解析函数需要进行数据库查询,本质上对服务器的开销并不低。
语法
{{#contributors:页面名}}
{{#contributors:页面名|filteranon}} 过滤匿名用户,但BWiki不存在匿名编辑。
- 该扩展的特殊页面也可嵌入,如
{{Special:Contributors/页面名}}
示例
{{#contributors:首页}}
→ (39886146)、(123855714)、(9388102)、(141211391)、(16083703)、(5205017)、(25679249)、(509732352)、(29136181)、(111160720)和(3546653302721147)
- 注意,一些小组件会改变用户名的外观
count
统计指定字符串的出现次数。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
涉及复杂字符串处理的需求,更推荐使用Lua模块。
- 官方文档:String functions - count
- 完整文档:帮助:解析函数/count - 更多示例、背景知识、底层代码和实战用例
语法
{{#count:文本|目标}}
- 文本: 字符串,要在其中搜索。
- 目标: 字符串,搜索目标。
其结果是文本
中目标
的出现次数,一个整数。
示例
{{#count:aa bb cc dd aa cc dd|aa}}
→ 2{{#count:aa bb cc dd dd}}
→ 4 (默认搜索空格)
cscore
获取用户贡献,如贡献分数、编辑数、编辑页面数。出自扩展 Contribution Scores。
语法
- 贡献分数:
{{#cscore:用户名|score}}
- 编辑次数:
{{#cscore:用户名|changes}}
- 编辑页面:
{{#cscore:用户名|pages}}
- 注意,此处的用户名是B站用户的bid。
示例
以Lu(bid 39886146)为例
- 贡献分数:
{{#cscore:39886146|score}}
→ 1,959 - 编辑次数:
{{#cscore:39886146|changes}}
→ 8,300 - 编辑页面数量:
{{#cscore:39886146|pages}}
→ 1,798
css
为页面增加CSS。出自扩展 CSS。
向页面添加CSS代码或CSS文件。CSS会被插入HTML的head中(而<bstyle>
会将CSS插入在编写位置)。
- 官方文档:Extension:CSS - Usage
- 平台文档:帮助:引用CSS类样式
- 完整文档:帮助:解析函数/css - 底层代码和实战用例
语法
{{#css: CSS代码}}
{{#css: 页面名}}
注意
参数首字符不能为/
,否则会被认定为服务器路径,导致CSS失效。
禁止出现部分CSS属性:
- url
- filter
- var
- attr
- image, image-set
- expression
- accelerator
- -o-link:, -o-link-source:, -o-replace
包含禁止特性的CSS会被替换为:/* insecure input */
,导致整段CSS无效。
此检测由Mediawiki的Sanitizer::checkCss方法进行。
要用这些属性,可以使用不带检测的<bstyle>
。
示例
{{#css:
.a_css_demo{
color:red;
}
}}<span class="a_css_demo">文字</span>
效果:
文字
更多用法
模板中防止多次插入CSS。
- 代码冗余会影响搜索引擎收录。如果是在被大量使用的模板中重复载入CSS,可能会导致页面异常。
{{#if:{{#varexists:防止多次加载CSS_XXX}} | |{{#vardefine:防止多次加载CSS_XXX|1}} {{#css:
/* css代码 */
}}}}
此模式通过判断变量是否定义,来判断变量名对应的CSS是否加载。
类似的,bstyle标签也可以使用这种写法:
{{#if:{{#varexists:页面内同一变量名中的CSS只会载入一次}} || {{#vardefine:页面内同一变量名中的CSS只会载入一次 | 1 }}<bstyle>/*<pre>*/
/* css代码 */
/*</pre>*/</bstyle>}}
D
declare
将指定模板参数的值存储为SMW数据。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
相当于用#set保存指定模板参数。但#set更灵活,还可指定默认值。
语法
{{#declare: 属性名=参数名
| 属性名=参数名
| ...
| 属性名=参数名
}}
在模板中使用,如果调用模板时给出了declare中指定的参数名,其参数值会被保存到属性名。
等价的写法是:
{{#set: 属性名={{{参数名|}}}
| 属性名={{{参数名|}}}
| ...
| 属性名={{{参数名|}}}
}}
不过#declare无法像#set一样,用{{{1|默认值}}}
指定默认值。
示例
假设模板A中有如下declare:
{{#declare: name=1
| type=类型
| image=图
}}
调用模板A时,如:{{A|柳木棍|类型=武器|image=balabala.png}}
相当于#set了以下属性:
- name=柳木棍
- type=武器
- image=balabala.png
default_form
指定一个表单,用于编辑页面。出自扩展 Page Forms。
- 官方文档:Extension:Page_Forms - The "edit with form" tab
- 完整文档:帮助:解析函数/default_form - 更多实际用例
语法
{{#default_form:表单名称}}
示例
{{#default_form:角色}}
在页面中指定表单后,Wiki功能菜单中会多出“采用表单编辑”按钮。
DEFAULTSORT
指定页面排序关键字。MediaWiki原生支持。
为页面设置默认的排序关键字。当页面被索引时,这个关键字将用于排序,确保页面在分类和搜索结果中按照指定顺序显示。
设置分类时指定排序关键字可以覆盖它:[[分类:分类名称|排序关键字]]
- 官方文档:Help:Magic_words - Technical metadata
- 完整文档:帮助:解析函数/defaultsort - 更多示例、背景知识、底层代码和实战用例
语法
{{DEFAULTSORT:文本|选项}}
- 文本:要设置为默认排序键的字符串,需要按顺序显示页面时,将按照此值进行排序。
- 选项:可选参数,可以是以下值之一:
- noreplace:设置不替换已经存在默认排序键,可用于禁止后续的#defaultsort覆盖。
- noerror:不显示错误信息,用于阻止多次使用#defaultsort的报错。
示例
比如在页面史密斯专员
中设置其排序位置为Smith
:
- 设置默认排序键:
{{DEFAULTSORT:Smith}}
- 使用 noreplace 选项:
{{DEFAULTSORT:Smith|noreplace}}
- 使用 noerror 选项:
{{DEFAULTSORT:Smith|noerror}}
DISPLAYTITLE
设置页面显示的标题。MediaWiki原生支持。
允许你在页面中设置自定义的显示标题,而不是默认的页面标题。
比如一些情况下无法用预期的标题创建页面,需要额外的前后缀,或使用ID、英文作为页面名。此时可以通过DISPLAYTITLE使页面显示预期的标题。 此外,页面名有限制,一些符号无法使用。DISPLAYTITLE可用于显示正确的页面名。
- 官方文档:Help:Magic_words - Technical metadata
- 完整文档:帮助:解析函数/displaytitle - 更多示例、背景知识、底层代码和实战用例
语法
{{DISPLAYTITLE:文本|选项}}
- 文本:你希望在页面上显示的标题内容。
- 选项:
noerror
:多次使用时,不显示错误信息。noreplace
:如果已经设置过DISPLAYTITLE,不会替换。
示例
{{DISPLAYTITLE:自定义标题}}
这将使页面的显示标题为“自定义标题”,而不是实际页面标题。{{DISPLAYTITLE:自定义标题|noerror}}
如果是多次使用,不显示错误信息{{DISPLAYTITLE:新标题|noreplace}}
如果之前已经设置DISPLAYTITLE,不替换它(防止覆盖)
dowhile
循环。只要条件wikitext的结果非空白,就会持续循环。出自扩展 Loops。
与#while不同的是,循环体的内容会至少执行一次。
- 官方文档:Extension:Loops - Usage
- 完整文档:帮助:解析函数/dowhile - 更多示例、背景知识、底层代码和实战用例
语法
{{#dowhile: 条件 | 代码 }}
- 条件:表示循环继续执行的条件。只要条件wikitext的结果非空,就会持续循环
- 代码:表示每次循环要执行的代码块,即每次都会重复解析的wikitext。
示例
以列表的格式输出0-4
{{#vardefine: i | 0 }}{{#dowhile:
| {{#ifexpr: {{#var: i }} < 5 | true }}
| <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
- 0
- 1
- 2
- 3
- 4
至少会执行一次(如果换成while则没有输出,因为首次运行时条件就不满足):
{{#vardefine: i | 9999 }}{{#dowhile:
| {{#ifexpr: {{#var: i }} < 1 | true }}
| <nowiki/>
* {{#var: i }}{{#vardefine: i | {{#expr: {{#var: i }} + 1 }} }}
}}
- 9999
dpl
展示指定页面的信息,包括页面长度、生成时间甚至模板参数。出自扩展 DynamicPageList3。
多数情况下,其功能可以由SMW和LST扩展配合模板实现。此外,DPL官方文档阅读难度不低,Bwiki使用较早版本与新版本特性略有不同,因此不推荐优先使用DPL。
主要特性:
- 支持多样的页面筛选方式,如类别(支持正则)、命名空间、链接、模板使用、标题、内容、修订日期、重定向等等。
- 支持输出页面元数据(如:类别、大小、缓存日期和页面ID等等)、页面内容(章节、解析函数/标签的调用、模板参数等等)
- 支持灵活的的输出格式和排序
文档:
- 官方文档:Extension:DPL3 Manual
- 完整文档:帮助:解析函数/dpl - 更多示例
语法
{{#dpl: 筛选页面 | 输出格式和控制 | 其他选项}}
- 如:
{{#dpl:namespace=帮助|titlematch=解析%|mode=ordered|count=2}}
主要参数:
- 筛选页面
- 按类别:category、categorymatch、categoryregexp、notcategory、notcategorymatch、notcategoryregexp、categoriesminmax
- 按空间:namespace、notnamespace
- 按链接:linksfrom、notlinksfrom、linksto、notlinksto、linkstoexternal、imageused、imagecontainer
- 按模板:uses、notuses、usedby
- 按标题:title、titlematch、titleregexp、titlelt、titlegt、nottitlematch、nottitleregexp
- 按内容:includematch、includematchparsed、includenotmatch、includenotmatchparsed
- 按版本:lastrevisionbefore、firstrevisionsince、allrevisionsbefore、allrevisionssince、maxrevisions、minrevisions
- 按用户:(在bwiki无效)
- ……
- 其中,带match的指使用%匹配,如%wi%。带regexp指使用正则表达式。
- 输出
- count 限制输出数量
- offset 从中间指定位置开始输出
- ordermethod 指定排序方式,如:size、pagetouched、pagesel、title、titlewithoutnamespace、sortkey......可以组合使用,以逗号隔开
- order 排序方向 descending或ascending
- mode 指定输出模式,如:unordered、ordered、none、inline、category和userformat。其中userformat是完全自定义,更灵活但是很复杂
- format 完全自定义输出格式(隐式定义mode=userformat),格式:format=Startall,Start,End,Endall (见示例)。可指定占位符输出数据如页面名、大小、各类日期等,详情见示例和官方文档
- include 为输出增加指定数据,如页面章节(如#章节名,##.*regexp.*)、模板参数({模板名}:参数)等等,多个值用逗号隔开。由于篇幅过大,详见官方文档的输出内容部分
- secseparators 为include的数据指定前后附加内容。格式:Start1,End1,Start2,End2,...... (见示例)
- ……
dpl支持数十个参数,请参阅官方文档了解所有细节
- 页面选择: Criteria for page selection
- 输出格式: Controlling output format
- 输出顺序: Controlling output order
- 输出内容: Controlling output volume
- 其他参数: Other parameters
示例
帮助空间的两个页面
{{#dpl:
|namespace = 帮助
|ordermethod=title
|count=2
}}
帮助空间的两个标题匹配解析函数/a%
模式页面,手动指定以列表形式显示
Startall
- Start 解析函数/anchorencode End
- Start 解析函数/arraydefine End
Endall
{{#dpl:
|namespace = 帮助
|titlematch = 解析函数/a%
|format= Startall\n,* Start [[%PAGE%|%TITLE%]], End\n, \nEndall
|ordermethod=title
|count=2
}}
其中:
- format的参数是
format=Startall,Start,End,Endall
- titlematch支持用%匹配页面(类似SQL中的like)
- %PAGE% 和 %TITLE% 分别代表完整页面名,和页面标题(不带命名空间)
更多例子参见完整文档帮助:解析函数/dpl。
dplchapter
从文本中提取章节内容出自扩展 DynamicPageList3。
从指定文本中提取包含特定章节标题的内容,支持字数限制和链接跳转详情。出自扩展 DynamicPageList3。
语法
{{#dplchapter: text | heading | limit | page | linktext }}
- text:包含章节的文本内容。
- heading:目标章节的标题。
- limit(可选):输出内容的最大字符数。如果文本超出限制,会显示一个链接。
- page(可选):当文本超出限制时,指向的页面链接。
- linktext(可选):超出限制时显示的链接文本。
dplchapter会提取与指定标题匹配的章节正文内容(不包含标题本身)。当内容长度超过设定的限制时,会在输出中添加一个指向指定页面的链接,链接文本可自定义。
示例
{{#dplchapter:
Some text.
==== My Headline ====
the body of the desired chapter.
==== Another Chapter ====
Its text.
|My Headline}}
the body of the desired chapter.
{{#dplchapter:
Some text.
==== My Headline ====
the body of the desired chapter.
==== Another Chapter ====
Its text.
|My Headline|15|首页|.. read more}}
the body of .. read more
dplmatrix
将缩进列表转换为矩阵视图。出自扩展 DynamicPageList3。
按照缩进列表标注的两个集合中元素的映射关系,生成矩阵视图。也可用于将DPL查询结果转换为表格。
- 官方文档:Extension:DPL3 - Dplmatrix
- 完整文档:帮助:解析函数/dplmatrix
语法
{{#dplmatrix: 矩阵名称 | yes | no | 模式 | '''缩进列表''' }}
- 矩阵名称:矩阵的名称,显示在左上角单元格中。支持任意 wiki 格式(包括图片)。
- yes(可选):有关系的显示内容,默认为 "x"。
- no(可选):没有关系的显示内容,默认为空。
- 模式(可选): 'normal'(默认值) 或 'flip'(行列交换)。
- 缩进列表:定义矩阵内容的缩进列表。
通过自定义CSS,可以控制矩阵的布局(使用class=dplmatrix)。
示例
- 生成一个简单的矩阵:
{{#dplmatrix:demo|<big>✓</big>|.||
one
oho
aha
three
aha
uhui ~~ UHU
two ~~ Two
uhui ~~ UHU
}}
该示例将生成如下矩阵,其中 "demo" 显示在左上角,集合1包括"one"、"two"、"three ,集合2包括"oho"、"aha"、"uhui" 等。在one下边缩进编写oho和aha代表他们之间有映射关系,表格中对应位置将显示“✓”。其中,two的标签为Two(two ~~ Two),uhui的标签是UHU(uhui ~~ UHU)
demo | aha | oho | UHU |
---|---|---|---|
one | ✓ | ✓ | . |
three | ✓ | . | ✓ |
Two | . | . | ✓ |
dplnum
靠猜测从文本中提取数字。出自扩展 DynamicPageList3。
- 官方文档:Extension:DPL3 - Dplnum
- 完整文档:帮助:解析函数/dplnum
语法
{{#dplnum:text}}
- text:待提取数字的文本
- 使用启发式算法(
拍脑袋算法根据直觉、经验编写)从文本中识别并提取数字,支持英文数字格式和单位。
dplreplace
文本替换。出自扩展 DynamicPageList3。
实际使用中更常用#replace。
语法
{{#dplreplace:text|pattern|replacement}}
- text:要进行替换操作的原始文本。
- pattern:用于匹配的正则表达式,遵循 PHP
preg_replace()
的语法。 - replacement:用于替换匹配部分的字符串,可包含对匹配组的引用。
将给定的pattern在text中替换为replacement。
示例
- 基本替换:
{{#dplreplace:abrakadabra|ab|AB}}
→ ABrakadABra- 将所有 "ab" 替换为 "AB"。
- 正则和捕获组:
{{#dplreplace:abrakadabra|/a(.*?)r/|A\1_r_}}
→ Ab_r_Akadab_r_a- 仅在 "a" 后面有 "r" 的情况下,将 "a" 替换为 "A" 并插入 "_r_"。
- 无匹配:
{{#dplreplace:hello world|xyz|123}}
→ hello world- "xyz" 不存在于文本中,返回原始文本不变。
dplvar
用于设置和获取变量的值。出自扩展 DynamicPageList3。
支持设置多个变量的值,额外赋予默认值,以及检索这些变量的当前值。
实际使用中,更广泛的使用#var,因为扩展 Variables 提供了更多更强大的功能。
- 官方文档:Extension:DPL3 - Dplvar
- 完整文档:帮助:解析函数/dplvar
语法
{{#dplvar:set |name1|value1|name2|value2|..|..}}:设置一个或多个变量名及其对应的值。
{{#dplvar:default|name|value}}:设置默认值。
{{#dplvar: name}}:获取指定变量的值。
示例
{{#dplvar:set|a|x|b|y|c|z}} {{#dplvar:default|a|aaaa}} {{#dplvar:default|d|dddd}}
a = {{#dplvar:a}}
b = {{#dplvar:b}}
c = {{#dplvar:c}}
d = {{#dplvar:d}}
a = x
b = y
c = z
d = dddd
```
E
explode
分割字符串。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
使用指定分隔符将字符串分割成多段,并返回指定位置的分割结果。如果指定位置超过分割后的数量,返回空字符串。
- 官方文档:Extension:ParserFunctions - String functions - explode
- 完整文档:帮助:解析函数/explode - 更多示例、背景知识、底层代码和实战用例
语法
{{#explode:文本 | 分隔符 | 位置索引 | 限制 }}
- 文本:要分割的字符串。
- 分隔符:用于分割字符串的分隔符。
- 位置索引:要返回的分割结果的位置索引。从0开始,可以是正数或负数,负数表示从末尾开始计数。
- 限制(可选):分割的最大数量。
示例
{{#explode:apple,banana,cherry | , | 1}}
→banana
{{#explode:one two three four | | -1}}
→four
- 空格分隔,位置索引 -1,得到最后一个分割 'four'。
{{#explode:alpha-beta-gamma | - | 2}}
→gamma
{{#explode:aaa bbb ccc ddd eee| |2|3}}
→ccc ddd eee
expr
计算数学表达式。出自扩展 ParserFunctions。
此函数在Scribunto扩展中也可用,函数名为mw.ext.ParserFunctions.expr
。
- 官方文档:帮助:扩展:解析器函数 #expr
- 完整文档:帮助:解析函数/expr - 更多示例、背景知识、底层代码和实战用例
语法
{{#expr: 表达式 }}
类型 | 运算符 |
---|---|
括号 | ( )
|
数字 | 1234.5 、 e (2.718) 、 pi (3.142)
|
e (科学计数法) + - (正负号)
| |
一元 运算符 |
not ceil trunc floor abs exp ln sin cos tan acos asin atan
|
二元 运算符 |
^
|
* / div mod
| |
+ -
| |
round
| |
逻辑运算符 | = != <> > < >= <=
|
and
| |
or
|
说明:
- 详细功能见Manual:Expr parser function syntax。
- 结果精度、格式取决于服务器系统和语言的数字格式。
- 逻辑运算中非零即真,就是说只有0为false,其他数为true。字符串比较可以用#ifeq
- 部分魔术字可指定参数 R 避免结果包含逗号,如
{{NUMBEROFUSERS:R}}
→8681427
- 溢出可能导致未预期报错:
{{#expr:123 mod 2^64}}
→零除。
- 支持使用 #iferror 处理错误
示例
{{#expr: 1 + 2 * 3 }}
→7
{{#expr: 1.1 or 0}}
→1
逻辑运算中非零即真{{#expr: 1+ }}
→表达式错误:缺少+的操作数。
F
filepath
返回文件的URL路径。MediaWiki原生支持。
常用于获取图片的完整URL,支持指定大小。
相比于利用重定向页面(特殊:重定向/file),filepath可以一次解析多次使用。大量图片重定向时,很容易触发BWiki访问频率限制(资源加载请求失败,HTTP状态码514)
- 官方文档:Help:Magic_words - URL_data
- 完整文档:帮助:解析函数/filepath - 更多示例、背景知识、底层代码和实战用例
语法
{{filepath:文件名|[选项]|[大小]}}
- 文件名:文件名称,无需包含命名空间
- 选项(可选):指定 nowiki,以纯文本非链接显示
- 大小(可选):指定图片尺寸,如 300 、 200x300px
示例
获取图片文件URL
{{filepath: Toolswikilogo.png }}
→https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png
{{filepath: Toolswikilogo.png | 60 }}
→https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png
配合CSS用作背景图:
<div class="demo-wiki-logo-type-a"></div>
{{#tag:bstyle|/*{{#tag:pre|*/
.demo-wiki-logo-type-a{
width:120px;
height:25px;
color:red;
background:url('{{filepath:Toolswikilogo.png | 120}}');
}
/*}}*/}}
(其中bstyle标签用于向页面插入CSS,pre标签用于避免css传入bstyle时被当做wikitext解析。)
在页面中显示URL,但不带链接
{{filepath: Toolswikilogo.png | nowiki | 60 }}
→https://patchwiki.biligame.com/images/tools/thumb/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png/60px-Toolswikilogo.png
{{filepath: Toolswikilogo.png | nowiki }}
→https://patchwiki.biligame.com/images/tools/4/41/fr3pnybxu6c0xtdypvwbfc5z1i1gcgy.png
follow
获取重定向页面的目标页面。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower - Basic functions and tags
- 完整文档:帮助:解析函数/follow - 底层代码
语法
{{#follow: 页面名}}
需要注意缓存问题,结果可能不会实时更新。
示例
{{#follow: 帮助:Expr}}
→ 帮助:解析函数/expr(帮助:Expr是一个重定向页面){{#follow: 首页}}
→ 首页{{#follow: 不存在的页面}}
→ 不存在的页面
forargs
在模板中遍历参数并对每个参数执行指定代码的解析函数。出自扩展 Loops。
forargs解析函数允许用户通过指定过滤器、键变量名和值变量名,遍历模板传入的参数,并在每次迭代中执行提供的代码块。
- 官方文档:Extension:Loops - #forargs
- 完整文档:帮助:解析函数/forargs - 更多示例、背景知识、底层代码和实战用例
语法
{{#forargs: prefix | key | value | code}}
- prefix:参数名的前缀。
- key:变量名,存储参数名,不包括前缀(仅对命名参数有用,编号参数名为空)。
- value:变量名,存储参数值。
- code:每次循环时被解析的wikitext,支持使用
、文档
输出参数名和值。
如果前缀非数字,仅处理匹配前缀的命名参数。前缀是数字时,处理所有参数(编号参数和命名参数)中匹配前缀的参数。
前缀为空时,遍历处理所有参数。
示例
在模板:Test中编写如下代码,遍历前缀为a的参数:
<includeonly>{{#forargs:a
| key
| value
| {{#var:key}} = {{#var:value}}<br>
}}
</includeonly><noinclude>
{{Test|a1=1|a2=2|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 1
2 = 2
在模板:Test中编写如下代码,遍历所有参数:
<includeonly>{{#forargs:| key | value | {{#var:key}} = {{#var:value}}; }}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 8; 2 = 9; a1 = 1; a2 = 2; a3 = 3; b1 = 4; b2 = 5; c1 = 6; c2 = 7;
使用switch跳过或单独处理指定参数:
<includeonly>{{#forargs:| key | value |{{#switch: {{#var:key}}
| a1 = <!-- 跳过a1 -->
| b2 = 单独处理b2;
| #default = {{#var:key}} = {{#var:value}};
}}}}</includeonly><noinclude>
{{Test|a1=1|a2=2|a3=3|b1=4|b2=5|c1=6|c2=7|8|9}}
</noinclude>
输出为:
1 = 8;2 = 9;a2 = 2;a3 = 3;b1 = 4;单独处理b2;c1 = 6;c2 = 7;
formatdate
日期格式用户化。MediaWiki原生支持。
将ISO 8601日期转换为 月日年 等格式,如10月 1, 2025
。由于支持的格式均不符合中文表述习惯,因此对中文wiki几乎无用。
- 官方文档:Help:Magic_words - Formatting
- 完整文档:帮助:解析函数/formatdate - 更多示例、底层代码和实战用例
语法
{{#formatdate: YYYY-MM-DD | 格式 }}
- 日期:必须为YYYY-MM-DD格式(ISO 8601),1月写为01,公元221年写为0221,公元前551写为-0551
- 格式(可选):指定输出格式,支持ISO 8601、dmy、mdy和ymd,默认为用户偏好设置。(dmy,指day month year)
- 输出是HTML,如:
<span class="mw-formatted-date" title="1949-10-01">10月 01, 1949</span>
如果输入日期格式无效或格式化失败,将原样返回输入日期。
用户可以在特殊:参数设置中指定日期格式(默认,或ISO 8601格式)。
示例
- ISO 8601标准格式
{{#formatdate:2025-10-01|ISO 8601}}
→<span class="mw-formatted-date" title="2025-10-01">2025-10-01</span>
→ 2025-10-01 - 支持
- 年/月/日格式
{{#formatdate:2025-10-01|ymd}}
→<span class="mw-formatted-date" title="2025-10-01">2025 10月 1</span>
→ 2025 10月 1 - 月/日/年格式
{{#formatdate:2025-08-01|mdy}}
→<span class="mw-formatted-date" title="2025-08-01">8月 1, 2025</span>
→ 8月 1, 2025 - 日/月/年格式
{{#formatdate:2025-06-01|dmy}}
→<span class="mw-formatted-date" title="2025-06-01">1 6月 2025</span>
→ 1 6月 2025
- 年/月/日格式
- 错误输入示例:
- 输入格式错误时,不会执行格式化,日期将按原样返回。
- 缺少前导零
{{#formatdate:2025-1-1|ISO 8601}}
→2025-1-1
- 错误格式
{{#formatdate:25/12/2025|ISO 8601}}
→25/12/2025
formatnum
数字格式本地化。MediaWiki原生支持。
根据Wiki语言配置,将数字格式本地化。比如对于孟加拉语Wiki {{formatnum:3}}
→ ৩
- 官方文档:Help:Magic_words - Formatting
- 完整文档:帮助:解析函数/formatnum - 更多示例、背景知识、底层代码和实战用例
语法
{{formatnum: 数字 | 选项 }}
参数
数字
:需要本地化的数字,支持小数选项
:(可选)- R - 还原为原始数字,移除分隔符。
- NOSEP - 数字本地化时,不包含分隔符(对于中英语言无用)。
数字的格式需要符合Wiki平台所设置语言的标准才能获得正确结果。因此对于站点语言为中文的BWiki,此解析函数的作用仅剩下增加/移除逗号分隔符(千分撇)。
示例
- 基本
{{formatnum: 0012345.67890 }}
→ 0,012,345.67890 - 还原
{{formatnum: 12,345.678 | R }}
→ 12345.678 - 小数
{{formatnum: .678 }}
→ .678 - 无作用
{{formatnum: 12,345.678 | NOSEP }}
→ 12,345.678
对于设为孟加拉语的Wiki:
{{formatnum:987654321.654321}}
→৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১
{{formatnum:৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১ |R}}
→987654321.654321
{{formatnum:987654321.654321 |NOSEP}}
→৯৮৭৬৫৪৩২১.৬৫৪৩২১
(没有逗号分隔符)
forminput
表单入口。提供一个输入框供用户输入页面名称,提供一个跳转到指定表单创建该页面。出自扩展 Page Forms。
请参阅官方文档:Extension:Page Forms/Linking to forms
formlink
表单入口。提供一个到指定表单的链接。出自扩展 Page Forms。
请参阅官方文档:Extension:Page Forms/Linking to forms
formredlink
表单入口。提供一个红色的,到指定表单的链接。红色链接在wiki中表示为不存在的页面,点击红色链接通常意味着创建页面。出自扩展 Page Forms。
请参阅官方文档:Extension:Page Forms/Linking to forms
fornumargs
遍历模板编号参数,以指定格式输出。出自扩展 Loops。
仅在模板中使用。遍历模板调用时传入的编号参数(显式或隐式编号),按照指定的格式输出。
- 官方文档:Extension:Loops - fornumargs
- 完整文档:帮助:解析函数/fornumargs - 更多示例、背景知识、底层代码和实战用例
语法
{{#fornumargs: 键变量名 | 值变量名 | 代码块}}
- 键变量名(可选):存储参数位置的变量名(如"1"、"2"等)
- 值变量名:存储参数值的变量名
- 代码块:每次循环执行的wikitext代码
- 参数处理特性:
- 自动过滤非数字参数(如"key=value"中key不是纯数字时会被忽略)
- 支持显式编号参数(如
1=值
)和隐式参数(如{{模板|值1|2=值2|a=不包括a}}
) - 参数键会按数字升序排列处理
示例
- 基础用法
{{#fornumargs: pos | val |<nowiki/>
* {{#var:pos}}={{#var:val}}
}}
调用:{{模板|苹果|B=香蕉|梨|5=芒果}}
输出:
* 1=苹果
* 2=梨
* 5=芒果
FULLPAGENAME
带命名空间的完整页面名MediaWiki原生支持。
根据输入返回包含命名空间前缀的完整页面名称,保留原始格式和大小写。
- 官方文档:Magic words - Page names
- 完整文档:帮助:解析函数/FULLPAGENAME - 更多示例、背景知识、底层代码和实战用例
语法
{{FULLPAGENAME}}
{{FULLPAGENAME: 页面名 }}
- 页面名(可选):任意文本(支持伪页面名和特殊字符)
无效输入(无法创建有效标题)时返回空字符串
示例
- 当前页面
{{FULLPAGENAME}}
→ 帮助:解析函数 - 带命名空间
{{FULLPAGENAME: 帮助:Fullpagename }}
→ 帮助:Fullpagename - 保留空格
{{FULLPAGENAME: a b c }}
→ A b c - 特殊字符
{{FULLPAGENAME: /a_b/c }}
→ /a b/c - 无效输入
{{FULLPAGENAME: 特殊:所有页面 }}
→
FULLPAGENAMEE
带命名空间的完整页面名,使用URL编码。MediaWiki原生支持。
根据输入页面名,返回包含命名空间前缀的完整页面名称,并进行URL编码,保留原始格式和大小写。
- 官方文档:Magic words - Page names
- 完整文档:帮助:解析函数/FULLPAGENAMEE - 更多示例、背景知识、底层代码和实战用例
语法
{{FULLPAGENAMEE}}
{{FULLPAGENAMEE: 页面名 }}
- 页面名(可选):任意文本(支持伪页面名和特殊字符)
无效输入(无法创建有效标题)时返回空字符串
示例
- 当前页面
{{FULLPAGENAMEE}}
→ %E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 - 带命名空间
{{FULLPAGENAMEE: 帮助:Fullpagename }}
→ %E5%B8%AE%E5%8A%A9:Fullpagename - 保留空格
{{FULLPAGENAMEE: a b c }}
→ A_b_c - 特殊字符
{{FULLPAGENAMEE: /a_b/c }}
→ /a_b/c - 无效输入
{{FULLPAGENAMEE: 特殊:所有页面 }}
→
fullurl
获取指定页面的完整URL。MediaWiki原生支持。
可附加查询参数。支持本地和跨wiki页面,自动处理URL编码。
- 官方文档:[1]
- 完整文档:帮助:解析函数/fullurl - 更多示例、背景知识、底层代码和实战用例
语法
{{fullurl: 页面名称 | 查询参数 }}
- 页面名称:支持命名空间、跨wiki链接
- 查询参数(可选):以key=value形式添加,多个参数用&连接
示例
- 基本
{{fullurl:帮助:解析函数}}
→ https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 - 带参数
{{fullurl:Test|action=edit}}
→ https://wiki.biligame.com/tools/index.php?title=Test&action=edit - 带参数
{{fullurl:Test|a=1&b=2&c=3}}
→ https://wiki.biligame.com/tools/index.php?title=Test&a=1&b=2&c=3 - 分类页
{{fullurl:分类:模板}}
→ https://wiki.biligame.com/tools/%E5%88%86%E7%B1%BB:%E6%A8%A1%E6%9D%BF - 跨wiki
{{fullurl:arxiv:2501.12948}}
→ https://www.arxiv.org/abs/2501.12948
fullurle
获取指定页面的完整URL。MediaWiki原生支持。
可附加查询参数,与fullurl一致。但url中的部分特殊字符会被转换为 HTML 实体。
- 官方文档:Magic words - URL data
- 完整文档:帮助:解析函数/fullurle - 更多示例、背景知识、底层代码和实战用例
语法
{{fullurle: 页面名称 | 查询参数 }}
- 页面名称:支持命名空间、跨wiki链接
- 查询参数(可选):以key=value形式添加,多个参数用&连接
会被转换为HTML实体的符号:&
→ &
、"
→ "
、<
→ <
和>
→ >
(见PHP函数htmlspecialchars 文档)
示例
- 基本
{{fullurle:帮助:解析函数}}
→https://wiki.biligame.com/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- 带参数
{{fullurle:Test|action=edit}}
→https://wiki.biligame.com/tools/index.php?title=Test&action=edit
- 带参数
{{fullurle:Test|a=1<2>1&b=2"2&c=3'3}}
→https://wiki.biligame.com/tools/index.php?title=Test&a=1<2>1&b=2"2&c=3'3
- 分类页
{{fullurle:分类:模板}}
→https://wiki.biligame.com/tools/%E5%88%86%E7%B1%BB:%E6%A8%A1%E6%9D%BF
- 跨wiki
{{fullurle:arxiv:2501.12948}}
→https://www.arxiv.org/abs/2501.12948
G
gender
根据用户设置的性别输出不同文字。MediaWiki原生支持。
BWiki中,用户默认称呼是中性,且每一个wiki均独立设置。因此gender函数在多数情况下没用。
- 官方文档:Magic words - Localization functions
- 完整文档:帮助:解析函数/解析函数名称(不带井号) - 更多示例、背景知识、底层代码和实战用例
语法
{{gender:用户名|男性文字|女性文字|中性文字}}
- 用户名:在BWiki指用户的b站uid
- 性别文字:可填写1-3个,分别对应男性、女性和中性。
性别文字参数只有一个时,默认使用中性。参数有两个时,如果用户没有指定性别则默认使用男性。
示例
{{gender:39886146|male text|female text|unspecified}}
→ male text (Lu在参数设置中指定了性别){{gender:39886146|unspecified}}
→ unspecified (仅有一个文字参数时直接输出){{gender:|male text|female text|unspecified}}
→ unspecified (bwiki默认使用中性){{gender:|male|female}}
→ male 如果不给出中性文字,默认是男性
- 官方文档:Magic words - Localization functions
- 官方文档:Grammar
- 完整文档:帮助:解析函数/grammar - 更多示例、背景知识、底层代码和实战用例
GRAMMAR
词形变化。MediaWiki原生支持。
根据词形变化代码输出给定的词的正确的词形变化(与语言相关)。语法变形被用于波兰语这样的屈折语。需要在服务器language.php中手动逐一添加。
对于BWiki这样的中文Wiki几乎无用。
语法
{{GRAMMAR:N|word}}
- N: 词形变化代码
- word: 要转换的词
示例
{{GRAMMAR:elative|wiki}}
→ wikistä (对于芬兰语wiki)
I
if
条件分支函数。出自扩展 ParserFunctions。
根据条件字符串是否为空(含空白)返回不同值。
- 官方文档:官方文档
- 完整文档:帮助:解析函数/if - 更多示例、背景知识、底层代码和实战用例
语法
{{#if: 条件 | 非空输出值 | 空输出值 }}
- 条件:要检查的wikitext(自动去除首尾空白)
- 非空输出值:当测试字串非空时输出的内容
- 空输出值(可选):当测试字串为空时输出的内容,默认为空字符串
示例
- 基本用法
{{#if: 文本 | 有内容 | 无内容}}
→ 有内容 - 空白处理
{{#if: | 有内容 | 无内容}}
→ 无内容 - 省略第三个参数
{{#if: | 有内容}}
→ (无输出) - 模板变量检测
{{#if:{{{参数|}}} | 参数已填写 | 参数为空}}
ifeq
条件分支函数。出自扩展 ParserFunctions。
比较两个输入值是否相等,根据比较结果返回对应字符串。
- 官方文档:Help:Extension:ParserFunctions#ifeq
- 完整文档:帮助:解析函数/ifeq - 更多示例、背景知识、底层代码和实战用例
语法
{{#ifeq: 值1 | 值2 | 相等返回值 | 不等返回值 }}
- 值1:第一个比较值
- 值2:第二个比较值
- 相等返回值:当两值相等时返回的内容
- 不等返回值(可选):当两值不等时返回的内容(可选,默认空字符串)
当两个参数都可转换为有效数值时进行数值比较(忽略前导零和科学计数法差异),否则进行严格文本比较(区分大小写)。
示例
- 数值比较
{{#ifeq: 01 | 1 | equal | not equal}}
→ equal - 数值比较
{{#ifeq: 1e3 | 1000 | equal | not equal}}
→ equal - 文本比较
{{#ifeq: "01" | "1" | equal | not equal}}
→ not equal - 大小写敏感
{{#ifeq: Foo | foo | equal | not equal}}
→ not equal - 标签比较 → not equal(在解析函数内部的标签和解析函数(如nowiki、pre、includeonly)会被暂时替换为一个唯一的Strip marker。这会影响到比较结果)
{{#ifeq: <nowiki>foo</nowiki> | <nowiki>foo</nowiki> | equal | not equal}}
iferror
条件分支函数,基于错误检测。出自扩展 ParserFunctions。
检测输入wikitext解析结果中是否存在错误标记(由class="error"的HTML元素表示),并根据检测结果返回不同值。
- 官方文档:Extension:ParserFunctions - #iferror
- 完整文档:帮助:解析函数/iferror - 更多示例、背景知识、底层代码和实战用例
语法
{{#iferror: 测试wikitext | 错误时返回值 | 正确时返回值 }}
- 测试wikitext:需要检测的wikitext,如#expr表达式
- 错误时返回值(可选):当检测到错误时返回的内容。如果留空且检测到错误,将返回空字符串
- 正确时返回值(可选):当未检测到错误时返回的内容。如果留空且未检测到错误,将返回测试字符串本身
错误检测基于HTML元素中是否包含class="error"属性,仅限strong/span/p/div标签。这类错误可能来自expr、time、rel2abs产生,模板(Templates)错误,如循环、递归和其他解析器错误也能产生。
示例
- 基本用法
{{#iferror: {{#expr: 1 + 2 }} | error | correct }}
→ correct - 检测错误
{{#iferror: {{#expr: 1 + X }} | error | correct }}
→ error - 省略正确返回值
{{#iferror: {{#expr: 10/2 }} | error }}
→ 5 - 同时省略返回值
{{#iferror: <span class="error">Err</span> }}
→ - 显式错误元素
{{#iferror: <div class="warning error">警示</div> | 发生错误 }}
→ 发生错误
ifexist
【高开销】条件分支函数,条件是指定页面/文件是否存在。出自扩展 ParserFunctions。
检查目标页面标题是否存在并返回对应结果值,支持检测文件是否存在。不支持跨wiki链接。
- 官方文档:Extension:ParserFunctions - #ifexist
- 完整文档:帮助:解析函数/ifexist - 更多示例、背景知识、底层代码和实战用例
语法
{{#ifexist: 页面标题 | 存在时的值 | 不存在时的值 }}
- 页面标题:要检查的页面标题
- 存在时的值:当页面存在时输出的内容
- 不存在时的值:当页面不存在时输出的内容
使用此函数的页面被视为链接到了要检查的页面,计入对应页面的链入页面。
此函数被标记为“高开销”。在bwiki,每个页面最多能使用100次高开销函数,超出后始终返回“不存在时的值”,并添加页面到分类:有过多高开销解析器函数调用的页面。
不过,如果检查目标是特殊页面、跨wiki链接或命中查询缓存,则不增加高开销计数(即,检查特殊页面存在性不是高开销的,检查一百次同一页面被视为使用一次高开销函数)。
要了解页面中高开销函数的使用情况,可以在编辑预览时,查看底部“解析器分析数据”表格。
超限制时的替代方式:部分情况可用CSS选择器如a.new
或a:not(.new)
模拟部分效果。
如果一定需要同时判断大量页面是否存在,文件可以通过函数filepath结果判断。页面可以通过判断#contributors替代,它们虽然实际开销不低,但没有被标记为“高开销”,没有单页使用次数限制。
示例
- 普通页面:
{{#ifexist: Help:解析函数 | exists | doesn't exist }}
→ exists - 不存在页面:
{{#ifexist: 帮助:如何PUA辰纱 | exists | doesn't exist }}
→ doesn't exist - 特殊页面:
{{#ifexist: 特殊:监视列表 | exists | doesn't exist }}
→ exists - 检查文件:
{{#ifexist: 文件:Test.png | exists | doesn't exist }}
→ exists - 系统消息:
{{#ifexist: MediaWiki:Copyright | exists | doesn't exist }}
→ doesn't exist
ifexpr
条件分支函数。条件是一个表达式。出自扩展 ParserFunctions。
计算表达式后,根据结果的真假返回指定的两个值之一。空/零值为假,出错为假,否则为真。
- 官方文档:Extension:ParserFunctions - #ifexpr
- 完整文档:帮助:解析函数/ifexpr - 更多示例、背景知识、底层代码和实战用例
语法
{{#ifexpr: 表达式 | 真值 | 假值 }}
- 表达式:数学表达式(支持运算符与expr相同)
- 真值(可选):表达式为真时的返回值
- 假值(可选):表达式为假时的返回值
当表达式为空或包含错误时,会被视为假值。零值视为假,非零值视为真。
示例
- 空表达式
{{#ifexpr: | yes | no }}
→ no - 逻辑运算
{{#ifexpr: 0 = 0 or 1 = 0 | yes }}
→ yes - 参数省略
{{#ifexpr: 1 < 0 | yes }}
→ - 错误处理
{{#ifexpr: = | yes | no }}
→ Expression error: Unexpected = operator. - 数值精度
{{#ifexpr: 12345678901234567 = 12345678901234568 | equal | not equal}}
→ equal- 说明:大整数比较会转换为浮点数导致精度丢失,建议使用#ifeq进行精确比较
imgh
获取指定图片高度。出自扩展 ImageSizeInfoFunctions。
- 官方文档:Extension:ImageSizeInfoFunctions - Usage
- 完整文档:帮助:解析函数/imgh - 更多示例、背景知识、底层代码和实战用例
语法
{{#imgh: 图片名称 }}
- 图片名称:需包含文件扩展名,可不带"文件:"前缀
不存在的文件返回0。
由于需要查询并读取文件,此函数的开销较高。在新版此扩展中,imgh被标记为高开销函数(BWiki目前使用的版本没有)。
示例
- 获取存在图片的高度
{{#imgh: 文件:Wikilogo.png }}
→ 101 - 省略命名空间前缀
{{#imgh: Wikilogo.png }}
→ 101 - 不存在的文件
{{#imgh: aaaaaaaaaaa.png }}
→ 0
imgw
获取指定图片宽度。出自扩展 ImageSizeInfoFunctions。
- 官方文档:Extension:ImageSizeInfoFunctions - Usage
- 完整文档:帮助:解析函数/imgh - 更多示例、背景知识、底层代码和实战用例
语法
{{#imgw: 图片名称 }}
- 图片名称:需包含文件扩展名,可不带"文件:"前缀
不存在的文件返回0。
由于需要查询并读取文件,此函数的开销较高。在新版此扩展中,imgw被标记为高开销函数(BWiki目前使用的版本没有)。
示例
- 获取存在图片的宽度
{{#imgw: 文件:Wikilogo.png }}
→ 440 - 省略命名空间前缀
{{#imgw: Wikilogo.png }}
→ 440 - 不存在的文件
{{#imgw: aaaaaaaaaaa.png }}
→ 0
info
一个小图标,点击显示悬浮框。出自扩展 Semantic MediaWiki SMW功能强大,应用广泛。<br>如需单页内大量调用,请考虑使用模板、模块批量查询,这能提升综合体验、降低资源消耗。<br>另请参阅灰机、Fandom的相关文档,他们详述了对SMW的顾虑和限制。。
移动端不易精确点击,使用需谨慎。
- 官方文档:Semantic MediaWiki - Help:Adding tooltips
- 完整文档:帮助:解析函数/info - 更多示例、背景知识、底层代码和实战用例
语法
{{#info: <text>|<icon>|max-width=<width>|theme=<theme>}}
- 悬浮框文本
- icon (可选):infoicon可选项info、noteicon可选项note、warningicon可选项warning、erroricon可选项error
- max-width (可选): 最大宽度,正整数。
- theme (可选):悬浮框样式:square-bordertheme可选项square-border、square-border-lighttheme可选项square-border-light
示例
文本文本 {{#info: 悬浮框文本 }}
→文本文本 悬浮框文本
- 指定图标
{{#info: 请按格式输入,例如:+86-12345678901|note}}
→ 请按格式输入,例如:+86-12345678901 - 指定宽度:
{{#info: 悬浮提示中要显示大量文字。……|note|max-width=600}}
→ 悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。悬浮提示中要显示大量文字。还有更多的文字。还有更多的文字。还有更多的文字。还有更多的文字。 - 指定主题:
{{#info: 使用不同主题样式的悬浮提示。|note|theme=square-border-light}}
→ 使用不同主题样式的悬浮提示。
int
获取指定系统文本。MediaWiki原生支持。
根据消息名称(Message key)获取系统文本,支持填充文本中的参数。
特殊:所有信息页面展示所有系统消息名称,在MediaWiki命名空间创建对应页面可以覆盖默认文本。
- 官方文档:Help:Magic_words - Localization
- 完整文档:帮助:解析函数/int - 更多示例、背景知识、底层代码和实战用例
语法
{{int: 消息名称 | 参数1 | 参数2 | ... }}
- 消息名称(必需):如"编辑"对应edit。
- 参数1...N(可选):将按顺序替换消息内容中的$1、$2等占位符
消息内容中的HTML标签会被解析,若消息键不存在将返回空值:⧼消息名称⧽
示例
- 基础用法:
{{int: edit}}
→ 编辑 - 带参数:
{{int: movepage-page-moved | 页面A | 页面B }}
→ 页面页面A已经移动到页面B。 - 编辑器上传文件的默认说明:
{{int: msu-comment}}
→ 基于MsUpload的文件上传 - 不存在:
{{int: m123456789}}
→ ⧼m123456789⧽
invoke
调用Lua模块。出自扩展 Scribunto。
执行通过Lua编写的模块函数,提供高性能的复杂逻辑处理能力。
Lua模块,用于替代需要编写复杂嵌套解析函数的需求,提升性能和可读性。也用于充当“数据库”,如读取、检索以json格式存储的数据,便于统一的数据存储更新。
- 官方文档:Extension:Scribunto - Usage
- 完整文档:帮助:解析函数/invoke - 更多示例、背景知识、底层代码和实战用例
请参阅:
语法
{{#invoke: 模块名 | 函数名 | 参数1 | 参数2 | ... }}
- 模块名:位于模块命名空间的页面名
- 函数名:模块中定义的Lua函数名
- 参数(可选):传递给Lua函数的参数,可指定参数名
当模块或函数不存在,或发生运行时错误时,会生成错误信息。
示例
- 基础调用
{{#invoke:Math|add|5|3}}
→ 执行Math模块的add函数 - 带复杂参数
{{#invoke:DataProcessor|format_table|header=Yes|data={{FULLPAGENAME}}}}
→ 动态处理页面数据
L
language
根据语言代码获取语言名称。MediaWiki原生支持。
- 官方文档:Help:Magic words - Localization functions
- 完整文档:帮助:解析函数/language - 更多示例、背景知识、底层代码和实战用例
语法
{{#language: 语言代码 | 目标语言代码 }}
- 语言代码:ISO 639/ISO 15924语言代码(如zh、en、ja)
- 目标语言代码(可选):不支持(需要额外的CLDR扩展)。指定返回名称所用的语言代码
在MW1.43及以上,支持无参数调用,请参阅官方文档(BWiki目前的MW版本是1.37)。
示例
{{#language: zh }}
→ 中文{{#language: zh-hans }}
→ 中文(简体){{#language: en }}
→ English{{#language: xxx }}
→xxx (不存在的代码)
lc
将字符串转换为小写形式MediaWiki原生支持。
该函数可将输入字符串转换为全小写形式,或仅首字母小写,支持多语言字符处理。
语法
{{lc: 文本 }}
- 文本:需要转换小写的原始文本
示例
{{lc: ABCDefg}}
→ abcdefg{{lc: QWER脸滚键盘 }}
→ qwer脸滚键盘{{lc: 一二三壹贰叁 }}
→ 一二三壹贰叁
lcfirst
将字符串的首字母转换为小写。MediaWiki原生支持。
- 官方文档:Help:Magic_words - Formatting
- 完整文档:帮助:解析函数/lcfirst - 更多示例、背景知识、底层代码和实战用例
语法
{{lcfirst: 文本 }}
- 文本:需要转换的字符串。
示例
{{lcfirst: QEWR脸滚键盘 }}
→ qEWR脸滚键盘{{lcfirst: 你们说的QEWR是什么意思啊? }}
→ 你们说的QEWR是什么意思啊? (无效案例)
len
计算字符串长度。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
获取wikitext解析后的字符数量,支持多字节字符计算。
- 官方文档:Extension:ParserFunctions/String_functions
- 完整文档:帮助:解析函数/len - 更多示例、背景知识、底层代码和实战用例
语法
{{#len: 字符串 }}
- 字符串(可选):需要计算长度的文本内容,留空时返回0
函数计算时会自动忽略文本首尾空格,但保留中间空格和换行符。HTML实体按源码形式计算长度。
示例
- 基础计算
{{#len: Žmržlina九 }}
→ 9 - 基础计算
{{#len: 张王李赵1234 }}
→ 8 - HTML实体
{{#len:   }}
→ 5 - 会被替换为解析标记(Strip marker)的标签
{{#len: <a>Hello</a>tt }}
→ 2{{#len: <gallery>Hello</gallery>tt }}
→ 2{{#len: <ref>Hello</ref>tt }}
→ 2
- 直接渲染的标签
{{#len: <div>Hello</div>tt }}
→ 18{{#len: <span>Hello</span>tt }}
→ 20
listfilter
列表过滤。出自扩展 ParserPower。
支持保留/排除项、模板条件等多种过滤方式,输出格式化后的新列表。
- 官方文档:ParserPower扩展文档
- wiki.gg文档:wiki.gg support wiki - ParserPower
- 完整文档:帮助:解析函数/listfilter - 更多示例、背景知识、底层代码和实战用例
语法
{{#listfilter:
|list=
|insep=
|outsep=
|keep=
|keepsep=
|keepcs=
|remove=
|removesep=
|removecs=
|token=
|tokensep=
|fieldsep=
|indextoken=
|pattern=
|template=
|counttoken=
|intro=
|outro=
|default=
}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- insep: 可选,输入分隔符,默认逗号
,
。用于分割参数list
,构建列表
输出格式控制,可选:
- outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
- counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
- default: 过滤后列表如果为空时的输出。
过滤参数,可选:
- keep: 指定保留值,默认不区分大小写。指定此参数将无视
remove
、template
、pattern
参数。- keepsep: 指定保留值分隔符,默认为逗号
- keepcs: 设为
yes
时,保留值keep
将区分大小写
- remove: 指定移除值,默认不区分大小写。指定此参数将无视
template
、pattern
参数。- removesep: 指定多个移除值的分隔符,默认为逗号
- removecs: 设为
yes
时,移除值remove
将区分大小写
- token, pattern: token作为占位符,pattern是条件wikitext,每个列表项都将被代入pattern中占位符的位置计算结果,如果是
remove
,对应项将被移出- indextoken: pattern中的token将被替换为(列表项的)序号而不是值
- tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做筛选
- template: 通过模板处理列表项,每个列表项被作为参数1传入模板。如果模板返回值是
remove
,此项会被移除。使用参数会忽略token、tokensep和pattern- fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板
过滤参数优先级:keep > remove > template > pattern
示例
{{#listfilter:list=Apple,Orange,Banana|keep=apple,banana}}
→ Apple, Banana{{#listfilter:list=1,10,100,1000|token=@|pattern=\{\{#ifexpr:@\g99\!remove\!keep\}\} }}
→ 1, 10- 其中,pattern是手动转义的条件,
{{#ifexpr:@>123|remove|keep}}
- 获得方式:
<esc>{{#ifexpr:@>123|remove|keep}}</esc>
→ \{\{#ifexpr:@\g123\!remove\!keep\}\} - 对于其他平台,可以直接用esc标签包裹条件作为参数,bwiki需要手动转义(这是一个
bug特性)
- 其中,pattern是手动转义的条件,
尚需进一步测试来了解平台bug对参数造成的限制。
listmap
列表排序、格式化输出。出自扩展 ParserPower。
按照指定的格式和排序方式输出列表元素。只能按字母、数字顺序排序、支持区分大小写和升降序。
- 官方文档:Extension:ParserPower/List_handling_functions
- wiki.gg文档:wiki.gg support wiki - ParserPower (注意wiki.gg大幅修改了ParserPower实现,未来此文档可能与bwiki特性不同)
- 完整文档:帮助:解析函数/listmap - 更多示例、背景知识、底层代码和实战用例
语法
{{#listmap:
|list=
|insep=
|outsep=
|token=
|tokensep=
|fieldsep=
|indextoken=
|pattern=
|template=
|sortmode=
|sortoptions=
|duplicates=
|counttoken=
|intro=
|outro=
|default=
}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- insep: 可选,输入分隔符,默认逗号
,
。用于分割参数list
,构建列表
输出格式控制,可选:
- outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
- counttoken: 占位符,用于在intro, outro参数中填充列表项数量
- default: 过滤后列表如果为空时的输出。
列表项格式参数,可选:
- token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置输出
- indextoken: pattern中的token将被替换为(列表项的)序号而不是值
- tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
- template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
- fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板
排序参数,可选:
- sortmode: 排序时机。值为以下选项之一:
- nosort 不排序
- presort 先排序,再格式化列表项。如果格式化不影响排序,使用此选项效率更高。
- sort 或 postsort 先按格式化列表项,后排序
- sortoptions: 排序方式,值为以下的一个或多个选项:
- alpha 或 numeric: 按字母或数字排序,默认字母
- asc 或 desc: 升序和降序排序
- ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
- duplicates: 重复值处理,值为以下选项之一:
- keep 保留重复值
- prestrip 在格式化前移除重复值
- strip 或 poststrip 在格式化后移除重复值。注意,此时wikitext尚未被解析,因此即使指定此选项,获得的结果仍然可能有重复项。
- pre/poststrip 在格式化前、后均移除一次重复值(目前由于扩展本身的bug,此选项仅能在格式化前执行一次)
示例
{{#listmap:list=Apple,Orange,Banana|token=@|pattern=[[首页|@]]}}
→ Apple, Orange, Banana{{#listmap:list=1,10,100,1000|token=@|pattern=\{\{#ifexpr:@\g99\!aa@\!bb\}\} }}
→ bb, bb, aa100, aa1000- 其中,pattern是手动转义的条件,
{{#ifexpr:@>123|aa@|bb}}
- 获得方式:
<esc>{{#ifexpr:@>123|aa@|bb}}</esc>
→ \{\{#ifexpr:@\g123\!aa@\!bb\}\} - bwiki需要手动转义(这是一个
bug特性)。对于其他平台,应当能直接用esc标签包裹wikitext作为参数。
- 其中,pattern是手动转义的条件,
{{#listmap:list=1,1,10,100,1000,1000|token=@|pattern=\{\{#ifexpr:@>99\!aa@\!bb\}\}|duplicates=poststrip}}
→ bb, bb, aa100, aa1000- 结果有两个bb是正常的,因为去重是针对pattern表达式去重,list中1和10的pattern是不同的,最终pattern的展开结果相同
listmerge
【疑存BUG】以指定规则合并列表元素。出自扩展 ParserPower。
列表中的所有元素将依次两两匹配,符合规则的元素将按照指定格式合并。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/listmerge - 更多示例、背景知识、底层代码和实战用例
语法
示例
- 疑似bug,暂无
{{#listmerge:list=Apple,Orange,Banana|token1=a|token2=b|matchpattern=yes|mergepattern=a+b}}
→+
(应为Apple+Orange+Banana
)
listsort
列表排序。出自扩展 ParserPower。
按字母、数字顺序排序、支持区分大小写和升降序。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/listsort - 更多示例、背景知识、底层代码和实战用例
语法
{{#listsort:
|list=
|insep=
|outsep=
|sortoptions=
|duplicates=
|token=
|tokensep=
|fieldsep=
|indextoken=
|pattern=
|template=
|subsort=
|subsortoptions=
|counttoken=
|intro=
|outro=
|default=
}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- insep: 可选,输入分隔符,默认逗号
,
。用于分割参数list
,构建列表
输出格式控制,可选:
- outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
- counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
- default: 过滤后列表如果为空时的输出。
列表项格式参数,可选:
- token, pattern: token作为占位符,pattern是带有占位符的wikitext,其解析结果将作为排序键
- indextoken: pattern中的token将被替换为(列表项的)序号而不是值
- tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分做格式控制
- template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
- fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板
排序参数,可选:
- sortoptions: 排序方式,值为以下的一个或多个选项:
- alpha 或 numeric: 按字母或数字排序,默认字母
- asc 或 desc: 升序和降序排序
- ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
- duplicates: 重复值处理,值为以下选项之一:
- keep 保留重复值,默认
- strip 移除重复值
- subsort和subsortoptions: 对相同元素,当subsort设为yes时,按照subsortoptions选项排序(可用选项与sortoptions相同)
示例
{{#listsort:list=Apple,Orange,Banana,Banana|sortoptions=@|duplicates=strip}}
→ Apple, Banana, Orange
listunique
列表去重。出自扩展 ParserPower。
支持按照指定wikitext操作列表项作为对比键。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/listunique - 更多示例、背景知识、底层代码和实战用例
语法
{{#listunique:
|list=
|insep=
|outsep=
|uniquecs=
|token=
|tokensep=
|fieldsep=
|indextoken=
|pattern=
|template=
|counttoken=
|intro=
|outro=
|default=
}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- insep: 可选,输入分隔符,默认逗号
,
。用于分割参数list
,构建列表
输出格式控制,可选:
- outsep: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- intro, outro: 输出时指定前置和后置内容,列表为空时不输出。用于避免在列表前后使用if来控制前后内容。
- counttoken: 占位符,用于在intro, outro参数中填充过滤后的列表项数量
- default: 过滤后列表如果为空时的输出。
去重参数,可选:
- uniquecs: 设为yes时,区分大小写
- token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置,展开后作为去重键
- indextoken: pattern中的token将被替换为(列表项的)序号而不是值
- tokensep, fieldsep: fieldsep是用于列表项的分隔符,此时token可指定多个占位符(默认分隔符是逗号,也可通过tokensep指定),pattern能单独针对列表项的一部分处理
- template: 通过模板处理列表项,每个列表项被作为参数1传入模板。使用参数会忽略token、tokensep和pattern
- fieldsep: 列表项分隔符,将每个列表项分割为多个参数传入模板
示例
{{#listunique:list=Apple,Apple,Orange,Banana,Orange,Banana}}
→ Apple, Orange, Banana
localurl
获取相对URL。MediaWiki原生支持。
指定页面获取其相对URL(不带域名),支持附加查询参数,自动进行URL编码。
- 官方文档:MediaWiki魔法字说明
- 完整文档:帮助:解析函数/localurl - 更多示例、背景知识、底层代码和实战用例
语法
{{localurl: 页面 | 参数 }}
- 页面:要生成URL的目标页面标题
- 参数(可选):以key=value格式附加的查询字符串参数,多个参数用&分隔
生成的URL始终采用与当前wiki配置匹配的短URL格式(如/wiki/页面名)或index.php路径。
示例
- 基础用法
{{localurl: 帮助:解析函数 }}
→/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- 基础用法
{{localurl: Test }}
→/tools/Test
- 单个参数
{{localurl: Test | printable=yes }}
→/tools/index.php?title=Test&printable=yes
- 多个参数
{{localurl: Test | action=raw&feed=atom }}
→/tools/index.php?title=Test&action=raw&feed=atom
localurle
获取相对URL,在localurl基础上将&等符号转换为HTML实体。MediaWiki原生支持。
指定页面获取其相对URL(不带域名),支持附加查询参数,自动进行URL编码,还会将这些字符转换为HTML实体:<>"&
→ <>"&
- 官方文档:MediaWiki魔法字说明
- 完整文档:帮助:解析函数/localurle - 更多示例、背景知识、底层代码和实战用例
语法
{{localurle: 页面 | 参数 }}
- 页面:要生成URL的目标页面标题
- 参数(可选):以key=value格式附加的查询字符串参数,多个参数用&分隔
生成的URL始终采用与当前wiki配置匹配的短URL格式(如/wiki/页面名)或index.php路径。
示例
- 基础用法
{{localurle: 帮助:解析函数 }}
→/tools/%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- 基础用法
{{localurle: Test }}
→/tools/Test
- 单个参数
{{localurle: Test | printable=yes }}
→/tools/index.php?title=Test&printable=yes
- 多个参数
{{localurle: Test | action=raw&feed=atom }}
→/tools/index.php?title=Test&action=raw&feed=atom
loop
循环函数。出自扩展 Loops。
重复解析一段wikitext。需要指定循环次数和循环变量。循环变量每次加一,如果循环次数为负数,则变量每次减一。
- 官方文档:Extension:Loops
- 完整文档:帮助:解析函数/loop - 更多示例、背景知识、底层代码和实战用例
语法
{{#loop: 变量名 | 起始值 | 循环次数 | 循环内容 }}
- 变量名(必填):存储当前循环次数的变量名称,可通过访问
- 起始值(必填):循环计数器初始值,接受整数值
- 循环次数(必填):绝对值决定循环次数,正负决定递增/递减方向
- 循环内容(必填):每次循环解析的wikitext内容
循环次数为0时不执行任何操作,负数时执行反向计数。实际循环次数取绝对值,例如"-4"同样执行4次循环。
示例
{{#loop: a | 1 | 4 | {{#var:a}} }}
→ 1234
{{#loop: j | 7 | -4 | {{#var:j}} }}
→ 7654
{{#loop: i | 2 | 4 |<nowiki/>
*{{#var:i}}
}}
- 2
- 3
- 4
- 5
lst
嵌入指定页面中被section标签标记的部分。出自扩展 Labeled Section Transclusion。
注意,只有直接写在wikitext中的section标签才是有效的,通过模板或#tag引入的section标签无效。
- 官方文档:Extension:Labeled Section Transclusion - Functions
- 完整文档:帮助:解析函数/lst - 更多示例、背景知识、底层代码和实战用例
语法
{{#lst: 页面 | section名称 }}
- 页面:来源页面
- section名称:指定要嵌入的section
示例
首先标记一段wikitext:
我以前和你一样是个冒险家,直到我的膝盖中了一箭……
其wikitext是:
<section begin="lst示例" />
<code>我以前和你一样是个冒险家,直到我的膝盖中了一箭……</code>
<section end="lst示例" />
一个section需要标记开始和结束位置,一个页面内可以有多个section。这些标记不是HTML/XML,不会干扰其他HTML或标签。
即可在任何页面使用#lst嵌入:{{#lst:帮助:解析函数/lst|lst示例}}
检查到模板循环:帮助:解析函数/lst
lsth
以标题为单位,嵌入指定页面中的wikitext。出自扩展 Labeled Section Transclusion。
- 官方文档:Extension:Labeled Section Transclusion - Functions
- 完整文档:帮助:解析函数/lsth - 更多示例、背景知识、底层代码和实战用例
语法
{{#lsth: 页面 | 标题}}
- 页面:来源页面
- 标题:要嵌入内容的标题
嵌入来源页面中指定标题下的内容,即从指定标题开始(不包含标题) ,直到下一个同级标题前。
{{#lsth: 页面 | 标题1 | 标题2 }}
- 页面:来源页面
- 标题1:要嵌入内容的标题,开始位置
- 标题2:要嵌入内容的标题,结束位置
嵌入来源页面中从标题1开始到标题2之间的内容,不包含标题12。
{{#lsth: 页面}}
- 页面:来源页面
嵌入页面中首个标题之前的内容
示例
{{#lsth:Wiki简介|获取帮助}}
开始编辑后,你一定会遇到很多问题。这大多可以通过搜索、查阅文档解决。
如果你嫌弃百度的搜索体验差,可以尝试必应国际版或Google搜索。如果中文搜不到,可以尝试使用英文。
当你不知道如何搜索,或者超过15分钟无法解决问题,请大胆去提问吧!BWiki社区有大量小伙伴,永远不用担心问不到人。
在wiki社区中,为了节省大家的时间精力,推荐阅读 提问的智慧(如无法访问,请参阅另一版本)
lstx
嵌入整个页面,除了指定排除的section。出自扩展 Labeled Section Transclusion。
与#lst相反,lstx会嵌入全部指定页面内容,除了指定的section。
- 官方文档:Extension:Labeled Section Transclusion - Functions
- 完整文档:帮助:解析函数/lstx - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstx: 页面 | 排除section | 替代文字 }}
- 页面:来源页面
- 排除section:要排除的section名称,这是通过标签section指定的,与lst的要求一致
- 替代文字:在排除section的位置展示的内容
示例
{{#lstx:帮助:解析函数/lst|lst示例}}
lstapp
向列表追加项。出自扩展 ParserPower。
也会移除列表中每个元素的前后空格,移除空值
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstapp - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstapp:list|separator|new item}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
- new item: 新元素
示例
{{#lstapp:Apple,Orange|,|Banana}}
→ Apple,Orange,Banana{{#lstapp: Apple , , , Orange |,|Banana}}
→ Apple,Orange,Banana
lstcnt
计算列表元素数量。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstcnt - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstcnt:list|separator}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
示例
{{#lstcnt:Apple,Orange,Banana|,}}
→ 3{{#lstcnt:Apple,Orange,Banana,Banana|a}}
→ 7
lstcntuniq
计算列表中不重复的元素数量。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstcntuniq - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstcntuniq:list|separator|case sensitivity option}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
- case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)
示例
{{#lstcntuniq:Apple,Banana,Banana|,}}
→ 2{{#lstcntuniq:Apple,Banana,Banana,Banana|a}}
→ 3
lstelem
按位置获取列表元素。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstelem - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstelem:list|separator|index}}
核心参数:
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
- index: 元素位置,支持负数(从后向前的位置)
示例
{{#lstelem:Apple,Orange|,|1}}
→ Apple{{#lstelem:Apple,Orange|,|-1}}
→ Orange{{#lstelem:Apple,Orange|,|-2}}
→ Apple
lstfltr
列表过滤,返回包含指定元素的列表。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstfltr - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstfltr:items to keep|items separator|list|input separator|output separator|case sensitivity option}}
核心参数:
- items to keep:要保留的元素
- items separator:保留元素的分隔符
- list: 列表。如
item 1,item 2,item 3
- input separator: 列表分隔符
- output separator: 输出分隔符
- case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)
示例
{{#lstfltr:Apple,Banana|,|Apple,Apple,Banana,Orange,Banana|,}}
→ Apple, Apple, Banana, Banana
lstfnd
寻找列表中第一个匹配的元素。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstfnd - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstfnd:item to find|list|separator|case sensitivity option}}
核心参数:
- item to find:要匹配的元素
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
- case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)
示例
{{#lstfnd:banana|Apple,Apple,Banana,Orange,Banana|,}}
→ Banana{{#lstfnd:{{#ifeq:arg-a|arg-b|apple|banana}}|Apple,Apple,Banana,Orange,Banana|,}}
→ Banana
lstind
获取列表中第一个匹配的元素的位置。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstind - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstind:item to find|list|separator|options}}
核心参数:
- item to find:要匹配的元素
- list: 列表。如
item 1,item 2,item 3
- separator: 列表分隔符
- options: 以下值中的一个或多个:
- asc / desc:asc(默认,从前向后搜索),desc(从后向前搜索)
- pos / neg :pos(默认,获取正向位置),neg(获取负向位置,即负数的从后向前的位置)
示例
{{#lstind:Banana|Apple,Banana,Orange,Banana|,}}
→ 2{{#lstind:Banana|Apple,Banana,Orange,Banana|,|neg}}
→ -3{{#lstind:Banana|Apple,Banana,Orange,Banana|,|desc}}
→ 4
lstjoin
合并两个列表,支持指定分隔符。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstjoin - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstjoin:first list|first input separator|second list|second input separator|output separator}}
核心参数:
- first list: 列表1。如
item 1,item 2,item 3
- first list separator: 列表1分隔符
- second list: 列表2。如
item 1,item 2,item 3
- second list separator: 列表2分隔符
- output separator: 输出分隔符,默认没有
示例
{{#lstjoin:Apple,Banana|,|Orange+Banana|+}}
→ AppleBananaOrangeBanana{{#lstjoin:Apple,Banana|,|Orange+Banana|+|、}}
→ Apple、Banana、Orange、Banana
lstmap
列表排序、格式化输出,是listmap的简化。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/listmap - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstmap:list|input separator|token|pattern|output separator|sort mode|sort options}}
参数:
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符,默认逗号
,
。用于分割参数list
,构建列表 - token, pattern: token作为占位符,pattern是格式wikitext,每个列表项都将被代入pattern中占位符的位置输出
- output separator: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
- sortmode: 排序时机。值为以下选项之一:
- nosort 不排序
- presort 先排序,再格式化列表项。如果格式化不影响排序,使用此选项效率更高。
- sort 或 postsort 先按格式化列表项,后排序
- sortoptions: 排序方式,值为以下的一个或多个选项:
- alpha 或 numeric: 按字母或数字排序,默认字母
- asc 或 desc: 升序和降序排序
- ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
示例
lstmaptemp
【疑存Bug】列表排序、格式化输出,是#listmap的简化,仅支持通过模板格式化输出。出自扩展 ParserPower。
无法复现示例
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstmaptemp - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstmaptemp:list|template|input separator|output separator|sort mode|sort options}}
参数:
- list: 列表。如
item 1,item 2,item 3
- template: 模板名,与 #listmap 的 template 参数一致,其输入是一个列表元素。
- input separator: 输入分隔符,默认逗号
,
。用于分割参数list
,构建列表 - output separator: 输出分隔符,默认逗号。用作输出时列表项的分隔符。
示例
- 无法成功复现示例
{{#lstmaptemp:Apple,Orange,Banana|模板名|,|,}}
lstprep
向列表前添加元素。出自扩展 ParserPower。
也会移除列表中每个元素的前后空格,移除空值。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstprep - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstprep:new item|separator|list}}
核心参数:
- new item: 新元素
- separator: 列表分隔符
- list: 列表。如
item 1,item 2,item 3
示例
{{#lstprep:Banana|,|Apple,Orange}}
→ Banana,Apple,Orange{{#lstprep:Banana|,|Apple , , , Orange}}
→ Banana,Apple,Orange
lstrm
从列表移除某一指定元素。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstrm - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstrm:item to remove|list|input separator|output separator|case sensitivity option}}
核心参数:
- item to remove: 要移除的一个元素
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符
- output separator: 输出分隔符
- case sensitivity option: ncs(不区分大小写,默认)或 cs(区分大小写)
示例
{{#lstrm:Banana|Apple,Banana,Orange,Banana|,}}
→ Apple, Orange
lstsep
列表更换分隔符。出自扩展 ParserPower。
同时会移除空白元素,移除元素前后的空格。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstsep - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstsep:list|input separator|output separator}}
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符
- output separator: 输出分隔符
示例
{{#lstsep:Apple,Banana,Orange,Banana|,|/}}
→ Apple/Banana/Orange/Banana{{#lstsep:Apple , , , Banana ,|,|+}}
→ Apple+Banana{{#lstsep:baaabaabab|a|+}}
→ b+b+b+b
lstsrt
列表排序,是#listsort的简版。出自扩展 ParserPower。
按字母、数字顺序排序、支持区分大小写和升降序。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/listsort - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstsrt:list|input separator|output separator|sort options}}
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符
- output separator: 输出分隔符
- sortoptions: 排序方式,值为以下的一个或多个选项:
- alpha 或 numeric: 按字母或数字排序,默认字母
- asc 或 desc: 升序和降序排序
- ncs 或 cs: 不区分大小写(ncs),或区分(cs),仅对alpha排序生效,默认不区分大小写
示例
{{#lstsrt:Apple,Orange,Banana,Banana|,|,}}
→ Apple,Banana,Banana,Orange
lstsub
获取列表的一部分。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstsub - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstsub:list|input separator|output separator|start index|length}}
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符
- output separator: 输出分隔符
- start index: 起始位置
- length: 截取长度
示例
{{#lstsub:Apple,Orange,Banana,Banana|,|,|2|1}}
→ Orange{{#lstsub:Apple,Orange,Banana,Banana|,|+|2|2}}
→ Orange+Banana
lstuniq
列表去重。出自扩展 ParserPower。
- 官方文档:Extension:ParserPower/List_handling_functions
- 完整文档:帮助:解析函数/lstuniq - 更多示例、背景知识、底层代码和实战用例
语法
{{#lstuniq:list|input separator|output separator|case sensitivity option}}
- list: 列表。如
item 1,item 2,item 3
- input separator: 输入分隔符
- output separator: 输出分隔符
- case sensitivity option: 是否区分大小写。ncs(默认,不区分),cs(区分大小写)
示例
{{#lstuniq:Apple,Orange,Banana,banana|,|,}}
→ Apple,Orange,Banana{{#lstuniq:Apple,Orange,banana,Banana|,|,}}
→ Apple,Orange,banana{{#lstuniq:Apple,Orange,Banana,banana|,|+|cs}}
→ Apple+Orange+Banana+banana
N
NAMESPACE
获取命名空间名称。MediaWiki原生支持。
获取当前页面,或者指定页面的命名空间名称。
- 官方文档:Help:Magic_words - Namespaces
- 完整文档:帮助:解析函数/namespace - 更多示例、背景知识、底层代码和实战用例
语法
{{NAMESPACE}}
获取当前命名空间。
{{NAMESPACE:页面名称}}
- 页面名称: 要获取命名空间名称的页面
示例
{{NAMESPACE}}
→ 帮助{{NAMESPACE:模板:2333}}
→ 模板{{NAMESPACE:{{FULLPAGENAME}}}}
→ 帮助
NAMESPACEE
获取命名空间名称,以URL编码。MediaWiki原生支持。
获取URL编码的当前页面,或者指定页面的命名空间名称,名称以URL编码。
- 官方文档:Help:Magic_words - Namespaces
- 完整文档:帮助:解析函数/namespacee - 更多示例、背景知识、底层代码和实战用例
语法
{{NAMESPACEE}}
获取当前命名空间。
{{NAMESPACEE:页面名称}}
- 页面名称: 要获取命名空间名称的页面
示例
{{NAMESPACEE}}
→ %E5%B8%AE%E5%8A%A9 (「帮助」的URL编码){{NAMESPACEE:模板:2333}}
→ %E6%A8%A1%E6%9D%BF (「模板」的URL编码){{NAMESPACEE:{{FULLPAGENAME}}}}
→ %E5%B8%AE%E5%8A%A9 (「帮助」的URL编码)
NAMESPACENUMBER
获取命名空间名称ID。MediaWiki原生支持。
获取当前页面或指定页面的命名空间ID,如主空间为0,模板为10等等。
- 官方文档:Help:Magic_words - Namespaces
- 完整文档:帮助:解析函数/namespacee - 更多示例、背景知识、底层代码和实战用例
语法
{{NAMESPACENUMBER}}
获取当前命名空间ID。
{{NAMESPACENUMBER:页面名称}}
- 页面名称: 要获取命名空间ID的页面
示例
{{NAMESPACENUMBER}}
→ 12(帮助){{NAMESPACENUMBER:首页}}
→ 0(主命名空间ID为0){{NAMESPACENUMBER:模板:2333}}
→ 10(模板){{NAMESPACENUMBER:{{FULLPAGENAME}}}}
→ 12(帮助)
ns
获取命名空间名称,根据ID或英文名。MediaWiki原生支持。
- 官方文档:Help:Magic_words - Namespaces
- 完整文档:帮助:解析函数/ns - 更多示例、背景知识、底层代码和实战用例
语法
{{ns:参数1}}
- 参数1:命名空间ID、英文名或中文名
示例
{{ns:-2}} / {{ns:Media}}
→媒体文件
{{ns:-1}} / {{ns:Special}}
→特殊
{{ns:0}} / {{ns:}}
→{{ns:2}} / {{ns:User}}
→用户
{{ns:4}} / {{ns:Project}}
→WIKI实验室
(取决于Wiki名称){{ns:6}} / {{ns:File}} / {{ns:Image}}
→文件
{{ns:8}} / {{ns:MediaWiki}}
→MediaWiki
{{ns:10}} / {{ns:Template}}
→模板
{{ns:12}} / {{ns:Help}}
→帮助
{{ns:14}} / {{ns:Category}}
→分类
{{ns:274}}
→Widget
{{ns:828}}
→模块
此外,中文名也可:
{{ns:模板}}
→ 模板
支持讨论命名空间:
{{ns:1}} / {{ns:Talk}}
→ 讨论{{ns:3}} / {{ns:User talk}}
→ 用户讨论{{ns:5}} / {{ns:Project talk}}
→ WIKI实验室讨论(取决于Wiki名称){{ns:7}} / {{ns:File talk}} / {{ns:Image talk}}
→ 文件讨论{{ns:9}} / {{ns:MediaWiki talk}}
→ MediaWiki讨论{{ns:11}} / {{ns:Template talk}}
→ 模板讨论{{ns:13}} / {{ns:Help talk}}
→ 帮助讨论{{ns:15}} / {{ns:Category talk}}
→ 分类讨论
nse
获取URL编码的命名空间名称,根据ID或英文名。MediaWiki原生支持。
与ns一致,但结果以URL编码。
- 官方文档:Help:Magic_words - Namespaces
- 完整文档:帮助:解析函数/nse - 更多示例、背景知识、底层代码和实战用例
语法
{{nse:参数1}}
- 参数1:命名空间ID、英文名或中文名
示例
{{nse:-2}} / {{nse:Media}}
→%E5%AA%92%E4%BD%93%E6%96%87%E4%BB%B6
{{nse:-1}} / {{nse:Special}}
→%E7%89%B9%E6%AE%8A
{{nse:0}} / {{nse:}}
→{{nse:6}} / {{nse:File}} / {{nse:Image}}
→%E6%96%87%E4%BB%B6
{{nse:8}} / {{nse:MediaWiki}}
→MediaWiki
此外,中文名也可:
{{nse:模板}}
→ %E6%A8%A1%E6%9D%BF
支持讨论命名空间:
{{nse:1}} / {{nse:Talk}}
→ %E8%AE%A8%E8%AE%BA{{nse:3}} / {{nse:User talk}}
→ %E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA
NUMBERINGROUP
获取指定用户组的用户数量。MediaWiki原生支持。
- 官方文档:Help:Magic_words - Statistics
- 完整文档:帮助:解析函数/numberingroup - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBERINGROUP:用户组ID}}
- 用户组ID: 以下值中的一个,参见特殊:用户组权限
- autoconfirmed : 自动确认用户
- automoderated : 自动版主化用户
- bilibili : bilibili用户
- bot : 机器人
- bureaucrat : 行政员
- checkuser : checkuser
- interface-admin : 界面管理员
- moderator : 版主
- push-subscription-manager : 推送订阅管理器
- smwadministrator : 管理员(语义MediaWiki)
- smwcurator : 监护人(语义MediaWiki)
- smweditor : 编辑(语义MediaWiki)
- suppress : 监督员
- sysop : 管理员
- user : 用户
- widgeteditor : 小部件编辑者
- 注意,此函数中使用参数bilibili可能会导致性能问题,可以使用
{{NUMBEROFUSERS}}
替代。 - 不过,bilibili用户组的成员数量不等于wiki用户数量。因为只有≥2级的B站用户登录wiki时才自动授予bilibili用户组。因此拥有bilibili用户组的用户数量通常略低于wiki用户数量。
示例
{{NUMBERINGROUP:automoderated}}
→ 13{{NUMBERINGROUP:bot}}
→ 1{{NUMBERINGROUP:bureaucrat}}
→ 8{{NUMBERINGROUP:interface-admin}}
→ 22{{NUMBERINGROUP:sysop}}
→ 19
NUMBEROFACTIVEUSERS
活跃用户数量。MediaWiki原生支持。
过去30天内执行过操作(如编辑页面)的用户被视为活跃用户。此变量与特殊:统计信息中的活跃用户数量统计保持一致。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofactiveusers - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFACTIVEUSERS}}
示例
{{NUMBEROFACTIVEUSERS}}
→ 9
NUMBEROFADMINS
管理员数量。MediaWiki原生支持。
拥有管理员用户组的用户数量。此信息也在特殊:统计信息 - 用户统计中显示。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofadmins - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFADMINS}}
示例
{{NUMBEROFADMINS}}
→ 19
NUMBEROFARTICLES
有效内容页面的数量。MediaWiki原生支持。
有效内容页面:主命名空间中带有链接的非重定向页面。
此信息也在特殊:统计信息 - 页面统计中显示。
在MW 1.17 及更早版本中,还需要带有至少一个逗号。
- 官方文档:Help:Magic words - Statistics
- 相关文档
- 完整文档:帮助:解析函数/numberofarticles - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFARTICLES}}
示例
{{NUMBEROFARTICLES}}
→ 166
NUMBEROFEDITS
总编辑次数。MediaWiki原生支持。
此信息也在特殊:统计信息 - 编辑统计中显示。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofedits - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFEDITS}}
示例
{{NUMBEROFEDITS}}
→ 17,485
NUMBEROFFILES
文件数量。MediaWiki原生支持。
此信息也在特殊:统计信息 - 页面统计中显示。
在BWiki,此统计约等于图片数量。目前上传文件仅限图片,较老的wiki可能会存在非图片文件。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberoffiles - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFFILES}}
示例
{{NUMBEROFFILES}}
→ 191
NUMBEROFPAGES
页面数量。MediaWiki原生支持。
Wiki中所有命名空间的总页面数量,包括讨论、重定向、图片页面等等。此信息也在特殊:统计信息 - 页面统计中显示。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofpages - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFPAGES}}
示例
{{NUMBEROFPAGES}}
→ 2,462
NUMBEROFPAGEVIEWS
【已弃用MediaWiki版本: 1.14 - 1.24 可用】。MediaWiki原生支持。
原用于显示页面浏览次数。但由于BWiki额外的CDN和缓存层,大部分访问不会纳入此统计,所以此变量通常低于实际浏览量,没有参考价值。
相应的,特殊:统计信息中的「最多查看页面」数据也不准确。
- 完整文档:帮助:解析函数/numberofpageviews - 底层代码
语法
{{NUMBEROFPAGEVIEWS}}
示例
{{NUMBEROFPAGEVIEWS}}
→ 923
NUMBEROFUSERS
注册用户数量。MediaWiki原生支持。
此信息也在特殊:统计信息 - 用户统计中显示。
登录B站的用户首次访问某一个BWiki站点时,会自动创建账号和登录(每个BWiki站点的用户和权限都是独立控制的)。所以此变量等价于访问过某一Wiki的B站用户数。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofusers - 更多示例、背景知识、底层代码和实战用例
语法
{{NUMBEROFUSERS}}
示例
{{NUMBEROFUSERS}}
→ 8,681,427{{NUMBEROFUSERS:R}}
→ 8681427
NUMBEROFVIEWS
【已弃用MediaWiki Version: 1.14 – 1.24】。MediaWiki原生支持。
原用于获取站点浏览量。但由于BWiki额外的CDN和缓存层,大部分访问不会纳入此统计,所以此变量通常低于实际浏览量,没有参考价值。
此信息也在特殊:统计信息 - 查看统计中显示,同样会低于实际浏览量。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/numberofviews - 底层代码
语法
{{NUMBEROFVIEWS}}
示例
{{NUMBEROFVIEWS}}
→ 2,313,694
O
or
返回两个参数中首个非空值。出自扩展 ParserPower。
在2020年5月10日后的版本中,支持任意多个参数(目前BWiki部署的版本仅支持两个参数)
- 官方文档:Extension:ParserPower Basic functions and tags
- 完整文档:帮助:解析函数/or - 更多示例、背景知识、底层代码和实战用例
语法
{{#or: 参数1 | 参数2}}
示例
{{#or: a | b }}
→a
{{#or: | b }}
→b
{{#or: {{{1|}}}| {{{2|默认值}}} }}
→默认值
(等价于{{{1|{{{2|默认}}}}}}
){{#vardefine:a}}{{#vardefine:b|2333}}{{#or: {{#var:a}} | {{#var:b}} }}
→2333
P
padleft
从左侧填充字符串。MediaWiki原生支持。
将指定字符串填充到原字符串的左侧,直到达到要求的长度。支持多字节字符(如中文)并确保安全处理Unicode。
也可用于从左侧截取字符串,或重复指定文本
- 官方文档:MediaWiki文档
- 完整文档:帮助:解析函数/padleft - 更多示例、背景知识、底层代码和实战用例
语法
{{padleft: 原字符串 | 目标长度 | 填充字符串 }}
- 原字符串:需要被填充的字符串
- 目标长度:填充后的总字符数(最大500)
- 填充字符串(可选):用于填充的字符串,默认为"0"
填充时会循环使用填充字符串直到达到目标长度。如果原字符串已长于目标长度,则不做任何处理。
示例
- 默认填0
{{padleft: xyz | 5 }}
→ 00xyz - 中文填充
{{padleft: 啊哈 | 5 | 填充 }}
→ 填充填啊哈 - 超长原文
{{padleft: 这个字符串太长了 | 5 | 填 }}
→ 这个字符串太长了 - 截断填充
{{padleft: | 3 | abcde }}
→ abc - 重复输出
{{padleft: | {{#expr:{{#len: abc }} * 3 }} | abc }}
→ abcabcabc
padright
从右侧填充字符串。MediaWiki原生支持。
将指定字符串填充到原字符串的右侧,直到达到要求的长度。支持多字节字符(如中文)并确保安全处理Unicode。
也可用于从右侧截取字符串,或重复指定文本。
与padright相同,只是填充方向相反,当原字符串为空时,这两个函数的行为一致。
- 官方文档:MediaWiki文档
- 完整文档:帮助:解析函数/padright - 更多示例、背景知识、底层代码和实战用例
语法
{{padright: 原字符串 | 目标长度 | 填充字符串 }}
- 原字符串:需要被填充的字符串
- 目标长度:填充后的总字符数(最大500)
- 填充字符串(可选):用于填充的字符串,默认为"0"
填充时会循环使用填充字符串直到达到目标长度。如果原字符串已长于目标长度,则不做任何处理。
示例
- 默认填0
{{padright: xyz | 5 }}
→ xyz00 - 中文填充
{{padright: 啊哈 | 5 | 填充 }}
→ 啊哈填充填 - 超长原文
{{padright: 这个字符串太长了 | 5 | 填 }}
→ 这个字符串太长了 - 截断填充
{{padright: | 3 | abcde }}
→ abc - 重复输出
{{padright: | {{#expr:{{#len: abc }} * 3 }} | abc }}
→ abcabcabc
PAGEID
获取页面ID。MediaWiki原生支持。
页面ID是一个数字,是页面的唯一标识符。
- 官方文档:MediaWiki文档
- 官方文档:Help:Page ID
- 完整文档:帮助:解析函数/pageid - 更多示例、背景知识、底层代码和实战用例
语法
{{PAGEID}}
- 获取当前页面ID
{{PAGEID:页面名称}}
- 获取指定页面ID
示例
{{PAGEID}}
→ 2216{{PAGEID:首页}}
→ 1{{PAGEID:帮助:解析函数}}
→ 2216{{PAGEID:特殊:最近更改}}
→ 0- 构造页面链接
https://wiki.biligame.com/tools/?curid={{PAGEID}}
→ https://wiki.biligame.com/tools/?curid=2216- 注意,BWiki针对此类URL的缓存约半小时
PAGENAME
获取页面名,不带命名空间。MediaWiki原生支持。
- 官方文档:Help:Magic words - Page names
- 完整文档:帮助:解析函数/pagename - 更多示例、背景知识、底层代码和实战用例
语法
{{PAGENAME}}
- 当前页面名
{{PAGENAME: 页面名称}}
- 获取指定页面名称的页面名
示例
{{PAGENAME}}
→ 解析函数{{PAGENAME:帮助:解析函数}}
→ 解析函数
PAGENAMEE
获取页面名,以URL编码,不带命名空间。MediaWiki原生支持。
- 官方文档:Help:Magic words - Page names
- 完整文档:帮助:解析函数/pagenamee - 更多示例、背景知识、底层代码和实战用例
语法
{{PAGENAMEE}}
- 当前页面名
{{PAGENAMEE: 页面名称}}
- 获取指定页面名称的页面名
示例
{{PAGENAMEE}}
→ %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 (解析函数){{PAGENAMEE:帮助:解析函数}}
→ %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0 (解析函数)
PAGESINCATEGORY
【高开销】指定分类的页面数量。MediaWiki原生支持。
- 官方文档:Help:Magic words - Statistics
- 完整文档:帮助:解析函数/pagesincategory - 更多示例、背景知识、底层代码和实战用例
语法
{{PAGESINCATEGORY: 分类名 | 选项 }}
- 分类名:获取此分类的页面数量
- 选项(可选):以下值中的一个
- all 默认,分类中的所有页面
- pages 仅普通页面(不包括子分类和文件)
- subcats 仅子类别
- files 仅文件
示例
{{PAGESINCATEGORY: 解析函数 }}
→ 45{{PAGESINCATEGORY: 解析函数 | files }}
→ 0{{PAGESINCATEGORY: 热力图 | all }}
→ 1,037{{PAGESINCATEGORY: 热力图 | all | R }}
→ 1037{{PAGESINCATEGORY: 热力图 | R | all }}
→ 1037
PAGESIZE
获取指定页面的大小。MediaWiki原生支持。
- 官方文档:Help:Magic words - Technical metadata of another page
- 完整文档:帮助:解析函数/pagesize - 更多示例、背景知识、底层代码和实战用例
语法
{{PAGESIZE: 页面名 }}
- 页面名:指定一个页面获取其大小(byte size)
{{PAGESIZE: 页面名 | R }}
- 不格式化结果数字(无逗号分隔符)
示例
{{PAGESIZE: 帮助:解析函数 }}
→ 13,663{{PAGESIZE: 帮助:解析函数 | R }}
→ 13663{{PAGESIZE: 帮助:不存在的页面23333333}}
→ 0
plural
语言复数判断。MediaWiki原生支持。
根据条件使用指定的单数/复数形式,条件为 1 / -1 时判定为单数。
- 官方文档:Help:Magic words - Localization functions
- 完整文档:帮助:解析函数/plural - 更多示例、背景知识、底层代码和实战用例
语法
{{plural: 条件wikitext | 单数文本 | 复数文本 }}
- 条件wikitext:用于判断单复数的条件wikitext,其结果应为数字
- 单数文本:条件wikitext的展开结果为为 1 / -1 时,输出的文本
- 复数文本:非单数情况输出的文本
以上参数描述为默认语言设置。部分语言有更多种复数形式,请参考官方文档和translatewiki.net上的相关文档Plura in MediaWiki。
示例
{{plural: 1 | is | are }}
→ is{{plural: -1 | is | are }}
→ is{{plural: -2 | is | are }}
→ are{{plural: 0 | is | are }}
→ are{{plural: 2 | is | are }}
→ are
pos
字符串搜索。出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
返回指定字符串首次出现的位置,区分大小写。没有找到结果时返回空字符串。搜索时,无视字符串中的nowiki标签和其他解析器扩展标签。
- 官方文档:Extension:ParserFunctions - String functions
- 完整文档:帮助:解析函数/pos - 更多示例、背景知识、底层代码和实战用例
语法
{{#pos: 字符串 | 搜索目标 | 偏移量 }}
- 字符串:被搜索的内容,其中的nowiki标签和解析器扩展标签会被无视,即先移除后搜索。
- 搜索目标:要在字符串中搜索的目标,默认空格
- 偏移量(可选):指定搜索的起始位置,用于跳过若干字符
示例
{{#pos: Wins Come All Day | Come }}
→ 5{{#pos: Wins Come All Day }}
→ 4 (查询目标默认为空格){{#pos: endless wins | e }}
→ 0{{#pos: endless wins | e | 2 }}
→ 4{{#pos: <a>赢</a>而不麻 | 麻 }}
→ 2 (扩展标签及其内容会被忽略){{#pos: 陈睿吃花椒 | 花椒 }}
→ 3
PROTECTIONEXPIRY
查询页面的保护到期时间。MediaWiki原生支持。
指定其他页面时,此函数是【高开销】的。
当页面指定保护时间时返回时间,否则未保护的页面和永久保护的页面均返回 infinity。不存在的页面和无效的操作参数返回空字符串。
- 官方文档:Help:Magic words
- 完整文档:帮助:解析函数/protectionexpiry - 更多示例、背景知识、底层代码和实战用例
语法
{{PROTECTIONEXPIRY: 操作 }}
- 操作:要查询的页面操作,如edit、move
{{PROTECTIONEXPIRY: 操作 | 页面名 }}
- 【高开销】操作:页面操作,如edit、edit
示例
{{PROTECTIONEXPIRY: edit }}
→infinity
(本页面没有保护){{PROTECTIONEXPIRY: move }}
→infinity
(本页面没有保护){{PROTECTIONEXPIRY: edit | 不存在的页面233333 }}
→{{PROTECTIONEXPIRY: move | 不存在的页面233333 }}
→{{PROTECTIONEXPIRY: edit | 保护页面示例 }}
→infinity
(本页面无限期保护){{PROTECTIONEXPIRY: move | 保护页面示例 }}
→infinity
(本页面无限期保护){{PROTECTIONEXPIRY: edit | 保护页面示例/有期限的 }}
→20990908160000
{{PROTECTIONEXPIRY: move | 保护页面示例/有期限的 }}
→20990908160000
{{PROTECTIONEXPIRY: abcdefg | 保护页面示例 }}
→
PROTECTIONLEVEL
查询页面保护级别。MediaWiki原生支持。
查询非当前页面时,是【高开销】函数。
- 官方文档:Help:Magic words
- 完整文档:帮助:解析函数/protectionlevel - 更多示例、背景知识、底层代码和实战用例
语法
{{PROTECTIONLEVEL: 操作 }}
- 操作:如move、edit。查询当前页面的保护级别
{{PROTECTIONLEVEL: 操作 | 页面名 }}
- 页面名:查询指定页面的保护级别【高开销】
返回结果为autoconfirmed
、sysop
或空字符串(未受保护)。超过高开销函数次数限制后,其返回结果是空字符串。
在BWiki中,Lv2以上的B站用户会被自动授予 autoconfirmed 用户组,因此只有“仅允许管理员”的页面保护是有意义的。
示例
{{PROTECTIONLEVEL: edit }}
→{{PROTECTIONLEVEL: move }}
→{{PROTECTIONLEVEL: edit | 保护页面示例 }}
→ sysop(这是个被永久保护的页面){{PROTECTIONLEVEL: move | 保护页面示例 }}
→ sysop
Q
queryformlink
查询表单入口。提供一个链接,跳转到指定表单的查询页面。出自扩展 Page Forms。
s
与{{特殊:执行查询/一个表单名称}}
略有不同,queryformlink可以指定更多参数。
请参阅官方文档:Extension:Page Forms/Creating query forms
语法
{{#queryformlink:form=查询表单名}}
{{#queryformlink:form=|link text=|link type=|query string=|tooltip=|popup}}
R
rel2abs
将相对路径转换为绝对路径。出自扩展 ParserFunctions。
- 官方文档:Help:Extension:ParserFunctions
- 完整文档:帮助:解析函数/rel2abs - 更多示例、背景知识、底层代码和实战用例
语法
{{#rel2abs: 相对路径 }}
或
{{#rel2abs: 相对路径 | 基础路径 }}
- 相对路径:要转换的路径,支持标准路径语法
- 基础路径(可选):作为参考的基础路径,默认为当前页面标题
说明
- 路径语法:
.
表示当前路径级别..
表示上一级路径/foo
表示进入子目录foo
多余的/
和.
会被自动清理。
如果路径尝试访问根目录之上的层级,会返回错误。
函数#iferror可以捕获此函数的错误。
示例
{{#rel2abs: /quok | Help:Foo/bar/baz }}
→ Help:Foo/bar/baz/quok{{#rel2abs: ../quok | Help:Foo/bar/baz }}
→ Help:Foo/bar/quok{{#rel2abs: ../../quok | Help:Foo/bar/baz }}
→ Help:Foo/quok{{#rel2abs: ../../../quok | Help:Foo/bar/baz }}
→ quok{{#rel2abs: ../../../../quok | Help:Foo/bar/baz }}
→ 错误:无效路径深度:“Help:Foo/bar/baz/../../../../quok”(尝试访问根节点以上节点){{#iferror: {{#rel2abs: ../../../../quok | Help:Foo/bar/baz }} | 出错了 | 正常 }}
→ 出错了
#replace
文本替换。出自扩展 ParserFunctions。
- 官方文档:英文文档
- 完整文档:帮助:解析函数/replace - 更多示例、背景知识、底层代码和实战用例
语法
{{#replace: 字符串 | 搜索项 | 替换项 | 替换次数 }}
- 字符串:要进行替换操作的原始文本,区分大小写
- 搜索项(可选):要查找的文本,默认为空格
- 替换项(可选):替换后的文本,默认为空字符串(即删除匹配项)
- 替换次数(可选):最大替换次数,默认为无限制
搜索项和替换项的最大长度受系统配置限制,扩展默认值是1000
参数首尾的空格会被移除,参数中的扩展标签也会被移除。如需在参数首尾使用空格,需要配合<nowiki/>
标签使用,如<nowiki/> balabala
,<nowiki/> <nowiki/>
示例
{{#replace:Hello world|world|Wiki}}
→ Hello Wiki{{#replace:Banana|a|o}}
→ Bonono{{#replace:No_spaces_here|_|<nowiki> </nowiki>}}
→ Nospaceshere{{#replace:No_spaces_here|_|<nowiki>-</nowiki>}}
→ Nospaceshere{{#replace:No_spaces_here|_|<nowiki/> <nowiki/>}}
→ No spaces here(由于nowiki和其他扩展标签会被移除,只能使用自闭合的nowiki标签防止空格被移除){{#replace:Remove all spaces}}
→ Removeallspaces
revisionday
获取指定页面更新日期的日(day),无前导0。
MediaWiki原生支持。
- 格式
- {{REVISIONDAY}}
- {{REVISIONDAY: 词条名}}【高开销】
- 例子
- {{REVISIONDAY}}→
13
- {{REVISIONDAY: Test}}→
22
- {{REVISIONDAY: 首页}}→
2
- {{REVISIONDAY: 模板:面包屑}}→
11
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
revisionday2
获取指定页面更新日期的日(day),有前导0(如06)。
MediaWiki原生支持。
- 格式
- {{REVISIONDAY2}}
- {{REVISIONDAY2: 词条名}}【高开销】
- 例子
- {{REVISIONDAY2}}→
13
- {{REVISIONDAY2: Test}}→
22
- {{REVISIONDAY2: 首页}}→
02
- {{REVISIONDAY2: 模板:面包屑}}→
11
revisionid
获取页面最新的修订ID。
修订ID是一个wiki站点对每次编辑按顺序分配的唯一标识。更大的revisionid代表着更近更新的编辑。
MediaWiki原生支持。
- 格式
- {{REVISIONID}}
- {{REVISIONID: 词条名}}【高开销】
- 例子
- {{REVISIONID}}→
51827
- {{REVISIONID: 首页}}→
51899
- 不存在的页面返回空 {{REVISIONID: 不存在的233333333333}}→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
revisionmonth
获取指定页面更新日期中的月,有前导零(即01月)。
MediaWiki原生支持。
- 格式
- {{REVISIONMONTH}}
- {{REVISIONMONTH|页面名}}【高开销】
- 例子
- {{REVISIONMONTH}}→
04
- {{REVISIONMONTH: 首页}}→
05
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:视频戳 - 机甲爱丽丝
- 模板:文章模板 - 明日方舟
- 模板:施工中 - 明日方舟
- 模板:文章时效 - 封印者
- 模板:最后更新 - 克鲁赛德战记
- 模板:更新时间 - 都市天际线2
- 模板:更新时间 - 城市:天际线
revisionmonth1
获取指定页面更新日期中的月,无前导零(即1月)。
MediaWiki原生支持。
- 格式
- {{REVISIONMONTH1}}
- {{REVISIONMONTH1|页面名}}【高开销】
- 例子
- {{REVISIONMONTH1}}→
4
- {{REVISIONMONTH1: 首页}}→
5
revisiontimestamp
获取指定页面更新时间的时间戳,格式:YYYYMMDDHHMMSS
。
MediaWiki原生支持。
- 格式
- {{REVISIONTIMESTAMP}}
- {{REVISIONTIMESTAMP: 页面名}}【高开销】
- 例子
- {{REVISIONTIMESTAMP}}→
20250413203215
- {{REVISIONTIMESTAMP: 首页}}→
20250502003143
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:回忆图鉴 - 突击莉莉终结之弹
- 模板:文章时效 - 封印者
- 模板:TimeSinceLastEdit - CSGO
- 模板:版头/提示 - 地下城堡2
- 模板:文章时效 - 异星工厂
- 模板:编写中 - falcon bms
- 模板:施工中 - 方舟指令
- 模板:待完善 - 高达
- 模板:文章时效 - 来古弥新
revisionuser
获取指定页面最后编辑的用户名(bid,B站用户唯一标识)。
因为BWIKI与B站账号互通,首次访问某wiki时,系统会自动在对应wiki创建以bid为用户名的用户,因此对于所有BWIKI上的站点,用户的用户名都是bid。 (需要注意,BWIKI职员/管理账号、导入的编辑可能会出现非bid、非数字的用户名)
比如对于bid 39886146的用户,可以通过https://space.bilibili.com/39886146
访问一个人的B站用户页。
也可以通过B站/BWiki的API查询获取用户的公开信息。
MediaWiki原生支持。
- 格式
- {{REVISIONUSER}}
- {{REVISIONUSER: 页面名}}
- 例子
- {{REVISIONUSER}}→
39886146
- {{REVISIONUSER: 首页}}→
3546653302721147
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:施工中 - 少前:云图计划
- 模板:编辑提示 - 白荆回廊
- 模板:施工中 - 碧蓝航线
- 模板:最后更新 - 克鲁赛德战记
- 模板:最后更新 - 放置江湖
- 模板:施工中 - 方舟指令
- 模板:编辑提示 - 幻塔
- 模板:最后更新 - 边狱公司
- 模板:最后更新 - 神甲奇兵
revisionyear
获取指定页面最近更新日期的年,如:2024。
MediaWiki原生支持。
- 格式
- {{REVISIONYEAR}}
- {{REVISIONYEAR: 页面名}}【高开销】
- 例子
- {{REVISIONYEAR}}→
2025
- {{REVISIONYEAR: 首页}}→
2025
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:视频戳 - 机甲爱丽丝
- 模板:文章模板 - 明日方舟
- 模板:施工中 - 明日方舟
- 模板:更新时间 - 都市天际线2
- 模板:更新时间 - 城市:天际线
- 模板:文章戳 - 戴森球计划
- 模板:文章时效 - 戴森球计划
rmatch
基于正则表达式匹配文本
正则表达式对任何字符都敏感,包括空格。
如果匹配成功 $#
和 \#
包含捕获的文本。如果您想要一个组后跟另一个数字,请使用 ${#}#
,#
为数字。
出自扩展 RegexFunctions。
- 格式
- {{#rmatch:string|pattern|then|else}}
- {{#rmatch:源字符串|正则表达式|匹配|不匹配}}
- 例子
- {{#rmatch: toolswiki是WIKI实验室|\w+|匹配|不匹配}}→
匹配
- {{#rmatch: toolswiki是WIKI实验室| \w+ |匹配|不匹配}}→
不匹配
(由于表达式中包含了空格导致匹配失败,因为空格也属于表达式的一部分) - {{#rmatch: toolswiki是WIKI实验室|([a-z]+)|$1}}→
toolswiki
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
rootpagename
对于子页面,获取根页面名(不包括命名空间)。
MediaWiki原生支持。
- 格式
- {{ROOTPAGENAME}}
- 例子
- 当前页 {{ROOTPAGENAME}}→ 解析函数
- 对于“帮助:Title/foo/bar” 页面 {{ROOTPAGENAME}}→
Title
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:编辑提示 - 白荆回廊
- 模板:同人作品 - 封印者
- 模板:卡马逊特权 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:魔卡图鉴 - 坎特伯雷公主与骑士唤醒冠军之剑的奇幻冒险
- 模板:编辑提示 - 幻塔
- 模板:物品介绍框 - 开普勒斯
- 模板:丹药 - 觅长生
- 模板:优化丹方 - 觅长生
- 模板:优化丹方/个 - 觅长生
- 模板:药材/主观 - 觅长生
rootpagenamee
对于子页面,获取URL编码的根页面名(不包括命名空间)。
MediaWiki原生支持。
- 格式
- {{ROOTPAGENAMEE}}
- 例子
- 当前页 {{ROOTPAGENAMEE}}→ %E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- 对于“帮助:点点/赛/高” 页面 {{ROOTPAGENAMEE}}→
%E7%82%B9%E7%82%B9
(点点的URL编码)
rpos
基于正则表达式匹配文本
正则表达式对任何字符都敏感,包括空格。
如果匹配成功 $#
和 \#
包含捕获的文本。如果您想要一个组后跟另一个数字,请使用 ${#}#
,#
为数字。
出自扩展 RegexFunctions。
- 格式
- {{#rmatch:string|pattern|then|else}}
- {{#rmatch:源字符串|正则表达式|匹配|不匹配}}
- 例子
- {{#rmatch: toolswiki是WIKI实验室|\w+|匹配|不匹配}}→
匹配
- {{#rmatch: toolswiki是WIKI实验室| \w+ |匹配|不匹配}}→
不匹配
(由于表达式中包含了空格导致匹配失败,因为空格也属于表达式的一部分) - {{#rmatch: toolswiki是WIKI实验室|([a-z]+)|$1}}→
toolswiki
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
rreplace
基于正则表达式替换文本
正则表达式对任何字符都敏感,包括空格。
(疑似每个页面只能生效20次?待验证)
如果匹配成功 $#
和 \#
包含捕获的文本。如果您想要一个组后跟另一个数字,请使用 ${#}#
,#
为数字。
出自扩展 RegexFunctions。
- 格式
- {{#rreplace:string|pattern|replacement}}
- {{#rreplace:源字符串|正则表达式|替换文本}}
- 例子
- {{#rreplace:bilibiliBWIKIbilibili|bilibili|哔哩哔哩}}→
哔哩哔哩BWIKI哔哩哔哩
- 这个例子中,将待处理文本中的所有“bilibili”替换成了“哔哩哔哩”。
- {{#rreplace:bilibiliBWIKIbilibili|(b→{{!}}l)|replacement=<span style="color:red">\1</span>}}
bilibiliBWIKIbilibili
- 这个例子中,将待处理的文本通过正则表达式,把
b
和l
处理成红色标记。
- 这个例子中,将待处理的文本通过正则表达式,把
- {{#rreplace:bilibiliBWIKIbilibili|(KI)|replacement=→<span style="color:red">${1}1</span>}}
bilibiliBWIKI1bilibili
- 这个例子中,将待处理的文本通过正则表达式,把KI替换成了KI1并标红。由于$11表示的是第11个匹配的内容,并不是我们想要的正确表达式,所以这里需要将
$11
写成${1}
再加上添加的1
,即${1}1
。
- 这个例子中,将待处理的文本通过正则表达式,把KI替换成了KI1并标红。由于$11表示的是第11个匹配的内容,并不是我们想要的正确表达式,所以这里需要将
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:勇士图鉴 - 克鲁赛德战记
- 模板:图标 - 克鲁赛德战记
- 模板:处理内链 - 梦幻模拟战
- 模板:数值标红 - 铃兰之剑
- 模板:英雄图鉴/保留 - 英雄联盟
- 模板:头像列表 - 忍者必须死3
- 模板:角色导航头像 - 公主连结
- 模板:剧情 - 赛尔号
- 模板:内容内链 - 天地劫
rsplit
基于正则表达式分割字符串,并返回指定片段。
正则表达式对任何字符都敏感,包括空格。
片段序号从左往右数为0开始的正整数,从右往左数则为-1开始的负整数。
出自扩展 RegexFunctions。
- 格式
- {{#rsplit:string|pattern|piece}}
- {{#rsplit:源字符串|正则表达式}}
- {{#rsplit:源字符串|正则表达式|片段序号}}
- 例子
- {{#rsplit:One Two Three Four|\s+}}→
One
- {{#rsplit:One Two Three Four|\s+|1}}→
Two
- {{#rsplit:One Two Three Four|\s+|2}}→
Three
- {{#rsplit:One Two Three Four|\s+|-1}}→
Four
S
seo
设置页面的SEO(搜索引擎优化)信息,如title和meta标签内容。
出自扩展 WikiSEO。
- 格式
- {{#seo:|title=页面标题}}
- {{#seo:|title=页面标题|title_mode=replace / prepend / append}}标题位置。replace是替换(默认),prepend是前置增加,append是追加。
- {{#seo:|title=页面标题|title_mode=prepend|title_separator=<<}}title_separator是分隔符,位于前置/追加的标题与原标题中间的分割。默认是
-
。 - {{#seo:|keywords=Apple, Pears, Oranges}}页面关键词,以半角逗号分割
- {{#seo:|description=This page contains information about...}}页面简述
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
set
出自Semantic Mediawiki。请参见帮助:SMW#set。
set_recurring_event
出自Semantic Mediawiki。请参见帮助:SMW#set_recurring_event。
show
出自Semantic Mediawiki。请参见帮助:SMW#show。
smwdoc
出自Semantic Mediawiki。请参见帮助:SMW#smwdoc。
special
指定的特殊页面在当前语言中的全名(包含命名空间)。
MediaWiki原生支持。
- 格式
- {{#special: 页面名称}}
- 例子
- {{#special: 特殊页面}}→
特殊:特殊页面
- {{#special: specialpages}}→
特殊:特殊页面
- {{#special: ask}}→
特殊:询问
- {{#special: ExpandTemplates}}→
特殊:展开模板
- {{#special: 2333333333}}→
特殊:2333333333
(不存在的特殊页面)
speciale
指定的特殊页面在当前语言中的全名(包含命名空间),并以URL编码。
MediaWiki原生支持。
- 格式
- {{#speciale: 页面名称}}
- 例子
- {{#speciale: 特殊页面}}→
%E7%89%B9%E6%AE%8A:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
- {{#speciale: specialpages}}→
%E7%89%B9%E6%AE%8A:%E7%89%B9%E6%AE%8A%E9%A1%B5%E9%9D%A2
- {{#speciale: ask}}→
%E7%89%B9%E6%AE%8A:%E8%AF%A2%E9%97%AE
- {{#speciale: ExpandTemplates}}→
%E7%89%B9%E6%AE%8A:%E5%B1%95%E5%BC%80%E6%A8%A1%E6%9D%BF
- {{#speciale: 2333333333}}→
%E7%89%B9%E6%AE%8A:2333333333
(不存在的特殊页面) - {{#speciale: 一个GPT助手}}→
%E7%89%B9%E6%AE%8A:%E4%B8%80%E4%B8%AAGPT%E5%8A%A9%E6%89%8B
(不存在的特殊页面)
sub
字符串截取
出自扩展 ParserFunctions 的String functions大规模使用时性能低下,推荐使用Lua模块。请参考扩展置顶警告和MediaWiki代码库 r51497中的暴论“parsers in the ugliest, most inefficient programming language known to man: MediaWiki wikitext with ParserFunctions.”、“WARNING: enabling this may have an adverse impact on the sanity of your users.”。
- 格式
- {{#sub: 字符串|起始位置|长度}}
- 例子
- 如果'起始位置'参数为正数(或者为零),按首字符的'位置'为'0'的规则,返回相应的字串:
- {{#sub:Icecream|3}}→
cream
- {{#sub:Icecream|0|3}}→
Ice
- 如果'起始位置'参数为负数,则从字串末尾开始,返回相应长度的的字串:
- {{#sub:Icecream|-3}}→
eam
- '长度'参数如果出现,并且为正数,则表示返回字串的最大长度:
- {{#sub:Icecream|3|3}}→
cre
- 如果'长度'参数为负数,则表示从字串末尾略去几个字符:
- {{#sub:Icecream|3|-3}}→
cr
- 注意
- 如果'长度'参数是零,则不会起作用:
- {{#sub:Icecream|3|0}}→
cream
- 如果'起始位置'参数指定的位置,落在负的'长度'参数所略去的字符上,则会返回空字串:
- {{#sub:Icecream|3|-6}}→
(空字串)
- 此函数兼容UTF-8多字节字符,如:
- {{#sub:Žmržlina|3}}→
žlina
- 如同len一样,<nowiki>等标签扩展,不计长度,也不占'位置',如:
- {{#sub:→<nowiki>This is a</nowiki>test|0}}
test
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:新版活动日历/行 - 另一个伊甸
- 模板:回忆图鉴 - 突击莉莉终结之弹
- 模板:莉莉服装图鉴 - 突击莉莉终结之弹
- 模板:商城刷新 - APEX
- 模板:模组/个 - 明日方舟
- 模板:关卡图鉴 - 碧蓝航线
- 模板:鱼雷图鉴 - 碧蓝航线
- 模板:连载漫画 - 猫之城
- 模板:文章时效 - 封印者
- 模板:最后更新 - 克鲁赛德战记
subjectpagename
获取讨论页对应的内容页面名,带命名空间。
镜像功能是TALKPAGENAME(获取页面对应的讨论页面名)
SUBJECTPAGENAME与ARTICLEPAGENAME
相同。
MediaWiki原生支持。
- 格式
- {{SUBJECTPAGENAME}}
- {{SUBJECTPAGENAME: 页面名}}
- 例子
- 对于点点的“HiWiki”页面 {{TALKPAGENAME: HiWiki}}→
讨论:HiWiki
- 对于“讨论:HiWiki”页面 {{SUBJECTPAGENAME: 讨论:HiWiki}}→
HiWiki
- 对于“帮助:解析函数”页面 {{TALKPAGENAME: 帮助:解析函数}}→
帮助讨论:解析函数
- 对于“帮助讨论:解析函数”页面 {{SUBJECTPAGENAME: 帮助讨论:解析函数}}→
帮助:解析函数
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
subjectpagenamee
获取讨论页对应的内容页面名,带命名空间,以URL编码。
镜像功能是TALKPAGENAMEE(获取页面对应的讨论页面名)
SUBJECTPAGENAMEE与ARTICLEPAGENAMEE
相同。
MediaWiki原生支持。
- 格式
- {{SUBJECTPAGENAMEE}}
- {{SUBJECTPAGENAMEE: 页面名}}
- 例子
- 对于点点的“HiWiki”页面 {{TALKPAGENAMEE: HiWiki}}→
%E8%AE%A8%E8%AE%BA:HiWiki
(即“讨论:HiWiki”的URL编码) - 对于“讨论:HiWiki”页面 {{SUBJECTPAGENAMEE: 讨论:HiWiki}}→
HiWiki
- 对于“帮助:解析函数”页面 {{TALKPAGENAMEE: 帮助:解析函数}}→
%E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
- 对于“帮助讨论:解析函数”页面 {{SUBJECTPAGENAMEE: 帮助讨论:解析函数}}→
%E5%B8%AE%E5%8A%A9:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
subjectspace
在讨论页获取内容页面的命名空间名。主命名空间为空。镜像功能是TALKSPACE
MediaWiki原生支持。
- 格式
- {{SUBJECTSPACE: 讨论页名称}}
- 例子
- {{SUBJECTSPACE: 帮助讨论:解析函数}}→
帮助
- {{SUBJECTSPACE: 讨论:解析函数}}→
- 对应的
- {{TALKSPACE: 解析函数}}→
讨论
- {{TALKSPACE: 帮助:解析函数}}→
帮助讨论
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
subjectspacee
在讨论页获取内容页面的命名空间名,并以URL编码。主命名空间为空。镜像功能是 TALKSPACEE。
MediaWiki原生支持。
- 格式
- {{SUBJECTSPACEE: 讨论页名称}}
- 例子
- {{SUBJECTSPACEE: 帮助讨论:解析函数}}→
%E5%B8%AE%E5%8A%A9
(帮助) - {{SUBJECTSPACEE: 讨论:解析函数}}→
- 对应的
- {{TALKSPACEE: 解析函数}}→
%E8%AE%A8%E8%AE%BA
(讨论) - {{TALKSPACEE: 帮助:解析函数}}→
%E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA
(帮助讨论)
subobject
出自Semantic Mediawiki。请参见帮助:SMW#subobject。
subpagename
获取子页面标题。例如“Help:Title/foo/bar”会返回“bar”。
MediaWiki原生支持。
- 格式
- {{SUBPAGENAME}}
- {{SUBPAGENAME: 页面名}}
- 例子
- {{SUBPAGENAME: Help:Title/foo/bar}}→
bar
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:关卡信息/主线/剧情 - 突击莉莉终结之弹
- 模板:Documentation/docname - 明日方舟
- 模板:塞壬图鉴顶栏 - 碧蓝航线
- 模板:怪物信息 - Core Keeper地心护核者
- 模板:素材图鉴 - 交错战线
- 模板:动态列表/行 - 深空之眼
- 模板:新闻列表/行 - 电竞经理
- 模板:新闻列表/行 - 刀剑神域黑衣剑士王牌
- 模板:文章 - 千年之旅
- 模板:游戏信息框 - 光环
subpagenamee
获取子页面标题,以URL编码。例如“Help:Work/toki/托奇”会返回“%E6%89%98%E5%A5%87”。
MediaWiki原生支持。
- 格式
- {{SUBPAGENAMEE}}
- {{SUBPAGENAMEE: 页面名}}
- 例子
- {{SUBPAGENAMEE: Help:Title/foo/bar}}→
bar
- {{SUBPAGENAMEE: Help:Work/toki/托奇}}→
%E6%89%98%E5%A5%87
(托奇)
switch
多分支语句,类似于编程语言中的switch。
其第一个参数是要进行条件判断的表达式或值。后续的参数是一系列的条件和对应的结果。
出自扩展 ParserFunctions。
- 格式
- {{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|默认}}
- {{#switch: 表达式|case1 = 结果1|case2 = 结果2|case3 = 结果3|...|caseN = 结果N|#default = 默认}}
- 例子
- {{#switch: baz|foo = Foo|baz = Baz|Bar}}→
Baz
- {{#switch: foo|foo = Foo|baz = Baz|Bar}}→
Foo
- {{#switch: zzz|foo = Foo|baz = Baz|Bar}}→
Bar
#switch
和部分转换标签可以作用于配置文件,从而可以使不熟悉模板代码的编辑者编辑可配置元素。- 关于默认结果
- 在当没有'情况字串'与'比较字串'相符时,会返回'默认结果':
- {{#switch: test|foo = Foo|baz = Baz|Bar}}→
Bar
- 按这个函数的句法,'默认结果'必须是最后一个参数,并且不能包含原始等号符。
- {{#switch: test|Bar|foo=Foo|baz=Baz}}→
- {{#switch: test|foo=Foo|baz=Baz|B=ar}}→
- 或者'默认结果'可以用'情况字串'
#default
来特别声明。 - 用这种方式声明的'默认结果'可以放在函数内的任何位置:
- {{#switch: test|foo=Foo|#default=Bar|baz=Baz}}→
Bar
- 如果'默认结果'被省略,当没有相符情况时,不会返回结果:
- {{#switch: test|foo=Foo|baz=Baz}}→
- 一组情况的结果
- 可以使用“fallthrough”值,即若干'情况字串'返回相同的'返回结果'。这能减少重复。
- {{#switch: 比较字串
|情况字串1 = 返回结果1
|情况字串2
|情况字串3
|情况字串4 = 返回结果234
|情况字串5 = 返回结果5
|情况字串6
|情况字串7 = 返回结果67
|#default = 默认结果
}}
- 在这里情况2、3、4都会返回“返回结果234”,情况6、7都会返回“返回结果67”。
- 关于比较
- 与
#ifeq
相同,如果'比较字串'和'情况字串'都为数值,则会按照数值进行比较。以上情况外,区分大小写:- {{#switch: 0 + 1|1 = one|2 = two|three}}→
three
- {{#switch:→{{#expr: 0 + 1}}|1 = one|2 = two|three}}
one
- {{#switch: a|a = A|b = B|C}}→
A
- {{#switch: A|a = A|b = B|C}}→
C
- '情况字串'可以是空:
- {{#switch:|= Nothing|foo = Foo|Something}}→
Nothing
- 当出现一个相符情况后,之后的'情况字串'会被忽略:
- {{#switch: b|f = Foo|b = Bar|b = Baz|}}→
Bar
- 注意
#switch
和#ifeq
的数值比较方法与#ifexpr
比较不同:- {{#switch: 12345678901234567|12345678901234568 = A|B}}→
B
- {{#ifexpr: 12345678901234567 = 12345678901234568|A|B}}→
A
- 具体见
ifeq
处的第一条“注意”。 - 关于原始等号符
- '情况字串'不能包含原始等号符。为了解决这个问题,创建了一个只包含一个等号符
=
的模板{{=}}。 - 应用的例子:
|1=2 = raw
|1
|1
|1=2 = html
|default
}}
→ template
- 关于替换
#ifeq
#switch
可以用来减少扩展深度。- 比如:
- {{#switch:{{{1}}}|情况1=分支1|情况2=分支2|情况3=分支3|分支4}}
- 等价于:
- {{#ifeq:{{{1}}}|情况1|分支1|{{#ifeq:}}{{{1}}}|情况2|分支2|{{#ifeq:}}{{{1}}}|情况3|分支3|分支4}}
- 写成便于阅读的格式即为:
|
|
|
|
|
|
}}
}}
}}
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
T
tag
生成一个XML标签,可以设定其标签类型、内文和属性。 有时候一些XML标签形式的解析器结构(即解析器扩展标签),不会解析和运算其内文,导致其无法在模板中使用或配合其他解析器结构使用(如tabber),此时则需要利用tag函数,生成一个内文已经解析了的标签。
MediaWiki原生支持。
- 格式
- {{#tag: 标签名|内容|属性}}
- 例子
- {{#tag: nowiki|这是nowiki里面,→{{padleft:|5|一二}}切运算都有效}}
这是nowiki里面,一二一二一切运算都有效
- {{#tag: ref|这是备注里面,→{{padleft:|5|一二}}切运算都有效|name="tag" group="tag"}}
[tag 1]
- {{#tag: references||group="tag"}}→
↑ 这是备注里面,一二一二一切运算都有效
(内文连一个空格都没有的话,便会生成一个自关闭标签)
talkpagename
在内容页面获取对应的讨论页名(带有命名空间)
MediaWiki原生支持。
- 格式
- {{TALKPAGENAME}}
- {{TALKPAGENAME: 页面名}}
- 例子
- {{TALKPAGENAME}}→
帮助讨论:解析函数
- {{TALKPAGENAME:首页}}→
讨论:首页
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
talkpagenamee
在内容页面获取对应的讨论页名,以URL编码(带有命名空间)
MediaWiki原生支持。
- 格式
- {{TALKPAGENAMEE}}
- {{TALKPAGTALKPAGENAMEEENAME: 页面名}}
- 例子
- {{TALKPAGENAMEE}}→
%E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA:%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0
(帮助讨论:解析函数) - {{TALKPAGENAMEE:首页}}→
%E8%AE%A8%E8%AE%BA:%E9%A6%96%E9%A1%B5
(讨论:首页)
talkspace
获取内容页面对应的讨论页面的命名空间名。
MediaWiki原生支持。
- 格式
- {{TALKSPACE}}
- {{TALKSPACE:页面名}}
- 例子
- {{TALKSPACE}}→
帮助讨论
- {{TALKSPACE:首页}}→
讨论
- {{TALKSPACE:模板:=}}→
模板讨论
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
talkspacee
获取内容页面对应的讨论页面的命名空间名,以URL编码。
MediaWiki原生支持。
- 格式
- {{TALKSPACEE}}
- {{TALKSPACEE:页面名}}
- 例子
- {{TALKSPACEE:首页}}→
%E8%AE%A8%E8%AE%BA
(讨论) - {{TALKSPACEE}}→
%E5%B8%AE%E5%8A%A9%E8%AE%A8%E8%AE%BA
(帮助讨论) - {{TALKSPACEE:模板:=}}→
%E6%A8%A1%E6%9D%BF%E8%AE%A8%E8%AE%BA
(模板讨论)
template_display
出自扩展Page Forms。请参阅帮助:PageForms#template_display
template_params
出自扩展Page Forms。请参阅帮助:PageForms#template_params
time
代码 | 说明 | 当前输出值 (清除此页面缓存以更新结果) |
---|---|---|
年 | ||
Y
|
4位数表示的年。 | 2025 |
y
|
2位数表示的年。 | 25 |
L
|
1表示闰年(Leap year),0表示非闰年。 | 0 |
o [注 1]
|
ISO-8601 规定的该周所属年份。[注 2] | 2025[注 3] |
月 | ||
n
|
月份号,无前导零。 | 5 |
m
|
月份号,有前导零。 | 05 |
M
|
月份名称缩写,使用网站语言。(英文结果为 May )
|
5月 |
F
|
月份名称全称,使用网站语言。(英文结果为 May )
|
5月 |
xg
|
月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。 这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。 在中文环境下: |
对于中文:
(主格) {{#time:Y F d|20 June 2010|zh}} → (属格) {{#time:Y xg d|20 June 2010|zh}} → |
周 | ||
W
|
ISO 8601 规定的周数,有前导零。 | 19 |
日 | ||
j
|
月份内的日期号,无前导零。 | 11 |
d
|
月份内的日期号,有前导零。 | 11 |
z
|
年份内的日期号 (1月1日 = 0)。 注意:要获得 ISO 规定的日期号,需加上1。 |
130 |
D
|
星期的缩写。国际上不通用。 | 日 |
l
|
星期的全称。国际上不通用。 | 星期日 |
N
|
ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 | 7 |
w
|
星期编号(星期日 = 0,星期六 = 6)。 | 0 |
时 | ||
a
|
早上为 am (00:00:00 → 11:59:59);其他时间为 pm (12:00:00 → 23:59:59)。
|
pm |
A
|
上方 a 的大写形式。
|
PM |
g
|
12小时制的时,无前导零。 | 9 |
h
|
12小时制的时,有前导零。 | 09 |
G
|
24小时制的时,无前导零。 | 21 |
H
|
24小时制的时,有前导零。 | 21 |
分 和 秒 | ||
i
|
小时后的分钟数,有前导零。 | 16 |
s
|
分钟后的秒钟数,有前导零。 | 23 |
U
|
UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 | 1746998183 |
时区(需 MediaWiki 1.22wmf2) | ||
e
|
时区标识符。 | UTC |
I
|
当前日期是否使用日光节约时间(夏令时)。 | 0 |
O
|
与格林尼治时间(GMT)的时差。 | +0000 |
P
|
与格林尼治时间(GMT)的时差,带有冒号分隔。 | +00:00 |
T
|
时区缩写。 | UTC |
Z
|
以秒计的时差。 | 0 |
杂项 | ||
t
|
当前月份的天数。 | 31 |
c
|
ISO 8601 格式的日期,等价于 Y-m-d"T"H:i:s+00:00 。
|
2025-05-11T21:16:23+00:00 |
r
|
RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000 ,其中星期名和月份名国际上不通用。
|
Sun, 11 May 2025 21:16:23 +0000 |
非公历日历 | ||
伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar) | ||
xmj
|
月份内的日期号。 | 13 |
xmF
|
月份名称全称。 | 都尔喀尔德月 |
xmn
|
月份号。 | 11 |
xmY
|
全长表示的年。 | 1446 |
伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar) | ||
xij
|
月份内的日期号。 | 21 |
xiF
|
月份名称全称。 | Ordibehesht |
xin
|
月份号。 | 2 |
xiY
|
全长表示的年。 | 1404 |
xiy
|
2位数表示的年。 | 04 |
希伯来历(Hebrew calendar) | ||
xjj
|
月份内的日期号。 | 13 |
xjF
|
月份名称全称。 | 以珥月 |
xjt
|
当前月份的天数。 | 29 |
xjx
|
属格形式的月份名称。 | Iyar |
xjn
|
月份号。 | 8 |
xjY
|
全长表示的年。 | 5785 |
泰国历(Thai solar calendar) | ||
xkY
|
泰国历的全长表示的年。 注意:公历1941年前的年份,1月到3月的范围内,计算得到的泰国历年份不正确。(原因) |
2568 |
民国纪年(Minguo calender) 朝鲜历(North Korean calendar),又称 主体历(Juche calendar) | ||
xoY
|
全长表示的年。 | 114 |
日本年号(Japanese era name, or Japanese nengo) | ||
xtY
|
全长表示的年(带有年号)。 | 令和7 |
转换标志 | ||
xn
|
将下一个数字代码转换为原始 ASCII 格式数字。 | 在印地语中, {{#time:H, xnH}} 得到的是 ०६, 06 。
|
xN
|
与 xn 功能类似。但它持续起作用到字串末尾,或字串中的下一个 xN 处。
| |
xr
|
将下一个数字代码转换为罗马数字格式。仅对 10,000 以内的数字有效 (MediaWiki 1.20 之前,仅对 3,000 以内的数字有效)。 |
{{#time:xrY}} → MMXXV
|
xh
|
将下一个数字代码转换为希伯来数字格式。 | {{#time:xhY}} → ב'כ"ה
|
将日期和/或时间(公历)按格式字串规定的格式进行转换。
可自行指定日期/时间对象,默认使用魔术字(Magic word)
的值(该值使用世界协调时间,UTC),也就是页面最近一次渲染为HTML的时间。
出自扩展 ParserFunctions。
- 格式
- {{#time: 格式字串}}
- {{#time: 格式字串|日期/时间对象}}
- {{#time: 格式字串|日期/时间对象|语言代码}}
- 在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
- 还有两种方法可以使'格式字串'内的字符原样输出:
- 反斜杠
\
后加字符,可以原样输出单个字母: - 一对半角双引号
" "
内的字符被当作文字,会原样输出,不带双引号。
- 反斜杠
- 另外,还可以用
xx
来输出单个字母x
。 - 例子
- {{#time:\m}}→
m
- {{#time:\xg}}→
x9
(x
被原样输出,g
被当作格式控制代码) - {{#time: Y-m-d}}→
2025-05-11
- {{#time:→[[Y]]m d}}
2025 05 11
- {{#time:→[[Y (year)]]}}
2025 (25UTCpmSun, 11 May 2025 21:16:23 +0000)
(year被当作格式控制代码y
、e
、a
、r
) - {{#time:→[[Y "(year)"]]}}
2025 (year)
- {{#time: i's"}}→
16'23"
- '日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如
20 December 2000
)和相对时间(如+20 hours
):- {{#time: r|now}}→
Sun, 11 May 2025 21:16:24 +0000
- {{#time: r|+2 hours}}→
Sun, 11 May 2025 23:16:24 +0000
- {{#time: r|now + 2 hours}}→
Sun, 11 May 2025 23:16:24 +0000
- {{#time: r|20 December 2000}}→
Wed, 20 Dec 2000 00:00:00 +0000
- {{#time: r|December 20, 2000}}→
Wed, 20 Dec 2000 00:00:00 +0000
- {{#time: r|2000-12-20}}→
Wed, 20 Dec 2000 00:00:00 +0000
- {{#time: r|2000 December 20}}→
错误:无效时间。
- '语言代码'使用的是ISO 639-3标准,可以显示所选语言的时间格式:
- {{#time:d F Y|1988-02-28|nl}}→
28 februari 1988
- {{#time:l|now|uk}}→
неділя
- {{#time:d xg Y|20 June 2010|pl}}→
20 czerwca 2010
- 译者注:以上三例本wiki内不起作用,因为不支持该语言。
- 如果需要在计算时使用UNIX时间,可以在UNIX时间前加上
@
:- {{#time: U|now}}→
1746998184
- {{#time: r|@1485582296}}→
Sat, 28 Jan 2017 05:44:56 +0000
- 注意:可接受的输入时间范围是0111年1月1日至9999年12月31日。100年到110年的各个格式控制代码的输出不一致:
Y
和L
按照100-110年来计算;但r
、D
、l
和U
是按照2000-2010年来计算的:- {{#time: d F Y|29 Feb 0100}}→
01 3月 0100
- 上面的结果正确,但是:
- {{#time: r|29 Feb 0100}}→
Mon, 01 Mar 0100 00:00:00 +0000
- 上面的结果错误,因为100年不是闰年,但2000年是闰年,上面的结果是按照2000年计算的。
- 超过9999年会得到不正确的结果:
- {{#time: d F Y|15 April 10000}}→
错误:无效时间。
- {{#time: r|10000-4-15}}→
Sat, 15 Apr 2000 10:00:00 +0000
- 0-99年被当作2000-2069年、1970-1999年来处理,除非使用4位数年格式来表示这些年份:
- {{#time: d F Y|1 Jan 6}}→
01 1月 2006
- {{#time: d F Y|1 Jan 06}}→
01 1月 2006
- {{#time: d F Y|1 Jan 006}}→
01 1月 2006
- {{#time: d F Y|1 Jan 0006}}→
01 1月 0006
(使用了4位数年)
星期名称支持100-110年和1753年以后的年份。111-1752年的r
中星期输出为Unknown
,l
的输出为<>
,且这几年的r
输出值不能当作有效的输入值。- 译者注:
- 测试了一些111-1752之间的年份,已经可以正常显示星期,且正确:
- {{#time: r|1 Jan 1600}}→
Sat, 01 Jan 1600 00:00:00 +0000
(应为星期六) - {{#time: r|23 Dec 802}}→
Mon, 23 Dec 0802 00:00:00 +0000
(应为星期一) - 使用日期转换进行验证。
- 可以指定完整的绝对日期,或者是一部分,此函数会将缺少的部分用当前日期的值填补:
- {{#time: Y|January 1}}→
2025
- 注意:填补功能在不同情况下填补不同的内容:
- {{#time: Y m d H:i:s|June}}→
2025 06 11 00:00:00
(使用了一天的开始时刻,填补了当前月份内的日期号、年份) - {{#time: Y m d H:i:s|2003}}→
2003 05 11 00:00:00
(使用了一天的开始时刻,填补了当前年份内的日期号)
- 在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
- {{#time: Y m d H:i:s|1959}}→
1959 05 11 00:00:00
- 6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
- {{#time: Y m d H:i:s|195909}}→
2025 05 11 19:59:09
(被当作时分秒而不是年月) - {{#time: Y m d H:i:s|196009}}→
错误:无效时间。
(即使19:60:09不是正确的时间,196009也不会被当作年月)
- 函数定量计算天数来得到日期:
- {{#time: Y F d|January 0 2008}}→
2007 12月 31
- {{#time: F d|January 32}}→
错误:无效时间。
(一个月超过31天的话,会报错) - {{#time: F d|February 29 2008}}→
2月 29
- {{#time: F d|February 29 2007}}→
3月 01
- {{#time:Y F|now -1 months}}→
2025 4月
#time
中'格式字串'的总长度限制为6000字符。- 关于时区
- 解析函数
#time
中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):- {{#time:g:i A|-4 hours}}→
5:16 PM
- 但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
- {{#time:g:i A|-4.5 hours}}→
6:16 AM
- 可以将时差转换为分钟或者秒钟来解决这个问题:
- {{#time:g:i A|-270 minutes}}→
4:46 PM
- {{#time:g:i A|-16200 seconds}}→
4:46 PM
- (上述方法由此函数开发者 Tim Starling 提供)
timel
与time一致,默认使用当地时间(在'日期/时间对象'留空时)。
出自扩展 ParserFunctions。
- 例子
- {{#time: Y-m-d}}→
2025-05-11
(世界协调时间,UTC) - {{#timel: Y-m-d}}→
2025-05-12
(北京时间,UTC+8) - {{#time: Y F d H:i:s}}→
2025 5月 11 21:16:23
(世界协调时间,UTC) - {{#timel: Y F d H:i:s}}→
2025 5月 12 05:16:23
(北京时间,UTC+8)
titleparts
获取子页面的一部分标题。以“/”分割,返回从指定开始位置,指定长度的标题。
处理时,会按照Wiki标题规则:下划线作为空格处理;HTML字符实体会被转化;页面首字母是大写的。
出自扩展 ParserFunctions。
- 格式
- {{#titleparts: 页面名|数量|开始位置}}
- 例子
- {{#titleparts: 帮助:解析函数/T/titleparts/Code}}→
帮助:解析函数/T/titleparts/Code
- {{#titleparts: 帮助:解析函数/T/titleparts/Code|1}}→
帮助:解析函数
,效果同ROOTPAGENAME。 - {{#titleparts: 帮助:解析函数/T/titleparts/Code|2}}→
帮助:解析函数/T
- {{#titleparts: 帮助:解析函数/T/titleparts/Code|2|2}}→
T/titleparts
- {{#titleparts: 帮助:解析函数/T/titleparts/Code||2}}→
T/titleparts/Code
- 注意
- 段落长度和段落位置均可以使用负数,负数段落长度表示从尾开始去掉该数量的段落,负数段落位置表示从尾开始计算段落位置。
- 例子
- {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1}}→
帮助:解析函数/T/titleparts
,效果同BASEPAGENAME。 - {{#titleparts: 帮助:解析函数/T/titleparts/Code|-4}}→
,去掉的段落数等于段落总数。
- {{#titleparts: 帮助:解析函数/T/titleparts/Code|-5}}→
,去掉的段落数超出了段落总数。
- {{#titleparts: 帮助:解析函数/T/titleparts/Code||-1}}→
Code
,效果同SUBPAGENAME。 - {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1|2}}→
T/titleparts
- {{#titleparts: 帮助:解析函数/T/titleparts/Code|-1|-2}}→
titleparts
- 注意
- 标题字串最多能含有255个半角字符或相应数量的全角字符,就跟正常页面标题一样。最多只会进行25次切割,25次以后的内容会被当作同一个段落处理。
- 例子
- {{#titleparts: a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/aa/bb/cc/dd/ee|1|25}}→
y/z/aa/bb/cc/dd/ee
- 注意
- 若标题字串含有标题内禁用的字符,此函数会返回原字串或返回空字串。
- 例子
{{#titleparts: {one/two} | 1 | 1 }}
→{one/two}
- {{#titleparts:→[[沙盒]]/123|1|2}}
沙盒/123
- {{#titleparts: red/#00FF00/blue|1|3}}→
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:扭蛋模拟器 - 突击莉莉终结之弹
- 模板:编辑提示 - 白荆回廊
- 模板:碧蓝回忆录/内容 - 碧蓝航线
- 模板:配队表 - 深空之眼
- 模板:誓灵图鉴 - 方舟指令
- 模板:首饰 - 激战2
- 模板:编辑提示 - 幻塔
- 模板:技能 - 梦幻模拟战
- 模板:Str find - 神甲奇兵
token
返回给定的字符串,其中所有出现的搜索词都被替换为替换词。
此功能与 replace 一样,但参数顺序相反。
出自扩展 ParserPower。
- 格式
- {{#token: 替换项|搜索项|源字符串}}
- 例子
- {{#token:Clown piece}}→
Clown piece
- {{#token:→<nowiki> </nowiki>|_|My_little_home_page}}
My little home page
tokenif
出自扩展ParserPower。
trim
出自扩展ParserPower。
trimuesc
出自扩展ParserPower。
U
uc
把输入的字串中所有字母变成大写。
MediaWiki原生支持。
- 格式
- {{uc: wikitext}}
- 例子
- {{uc: qwer脸滚键盘}}→
QWER脸滚键盘
ucfirst
把输入的字串中第一个字母变成大写。
MediaWiki原生支持。
- 格式
- {{ucfirst: wikitext}}
- 例子
- {{ucfirst: qwer脸滚键盘}}→
Qwer脸滚键盘
- {{ucfirst: 你们说的qwer脸滚键盘是什么意思啊}}→
你们说的qwer脸滚键盘是什么意思啊
ueif
出自扩展ParserPower。 参见帮助:ParserPower#ueif
ueifeq
出自扩展ParserPower。 参见帮助:ParserPower#ueifeq
uesc
出自扩展ParserPower。 参见帮助:ParserPower#uesc
uescnowiki
出自扩展ParserPower。 参见帮助:ParserPower#uescnowiki
ueswitch
出自扩展ParserPower。 参见帮助:ParserPower#ueswitch
urldecode
解码URL编码的字符串。
MediaWiki原生支持。
- 格式
- {{#urldecode: 字符串}}
- 例子
- {{#urldecode: ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25}}→
ABC中文 英文 123&456+1%
- {{#urldecode: ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25}}→
ABC中文 英文 123&456+1%
(用urlencode加QUERY编码的字串) - {{#urldecode: ABC%E4%B8%AD%E6%96%87_%E8%8B%B1%E6%96%87_123%26456%2B1%25}}→
ABC中文_英文_123&456+1%
(用urlencode加WIKI编码的字串) - {{#urldecode: ABC%E4%B8%AD%E6%96%87%20%E8%8B%B1%E6%96%87%20123%26456%2B1%25}}→
ABC中文 英文 123&456+1%
(用urlencode加PATH编码的字串)
urlencode
URL编码指定字符串。
MediaWiki原生支持。
- 格式
- {{urlencode: 字符串}}
- {{urlencode: 字符串|格式}}格式可选 QUERY / WIKI / PATH 。默认为QUERY
- QUERY 空格变为
+
- WIKI 空格变为
_
- PATH 空格变为
%20
- QUERY 空格变为
- 例子
- {{urlencode: ABC中文 英文 123&456+1%}}→
ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25
- {{urlencode: ABC中文 英文 123&456+1%|QUERY}}→
ABC%E4%B8%AD%E6%96%87+%E8%8B%B1%E6%96%87+123%26456%2B1%25
- {{urlencode: ABC中文 英文 123&456+1%|WIKI}}→
ABC%E4%B8%AD%E6%96%87_%E8%8B%B1%E6%96%87_123%26456%2B1%25
- {{urlencode: ABC中文 英文 123&456+1%|PATH}}→
ABC%E4%B8%AD%E6%96%87%20%E8%8B%B1%E6%96%87%20123%26456%2B1%25
V
var
输出变量。 变量需要事先用vardefine或vardefineecho定义。
出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 格式
- {{#var: 变量名}}
- {{#var: 变量名|默认值}}变量不存在则输出默认值
- 例子
- 先定义变量{{#vardefine: abc|123456}}
- {{#var: count|未定义}}→
未定义
输出不存在的变量count,会获得默认值。 - {{#var: abc|未定义}}→
123456
获取已定义的变量abc。
var_final
【将弃用】输出变量,使用页面解析结束时变量的值。因此,这允许在未定义变量前使用变量。
- 注意
- 在MediaWiki 1.35版本后,var_final被标记为弃用,MediaWiki 1.39版本后将移除。目前,在BWIKI可以使用,灰机Wiki已弃用。
- 由于行为复杂,它可能会出现未预期的表现,容易让代码难以理解和阅读。
出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 格式
- {{#var_final: 变量名}}
- {{#var_final: 变量名|默认值}}如果变量未定义,返回默认值
- 例子
- {{#var_final: count233|未定义}}→
谨慎使用Variables
在此处获取在后面代码中才会被定义的count的内容。 - 此处定义 count233:{{#vardefine: count233|谨慎使用Variables}}
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
vardefine
定义变量。即将一个字符串存储到指定变量中,以便于在后续代码中多次使用。此函数不会输出任何内容。
出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 格式
- {{#vardefine: 变量名|值}}
- 例子
- {{#vardefine: count|0}}→
定义count变量,值为0
- {{#vardefine: text}}→
定义空变量text
- {{#vardefine: text|新的233}}→
可以重复定义以覆盖已有变量,现在text的值是
新的233
。 - {{#vardefine: text|→{{#var: text}}内容}}
可以使用更复杂的wikitext来为变量赋值,现在text的值是:
新的233内容
。 - {{#vardefine: count|→{{#expr:}}{{#var: count}}+1}}
通过与expr组合,实现计算,现在变量count的内容为
1
。
vardefineecho
定义并输出变量。行为上相当于vardefine和var先后调用。
出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 格式
- {{#vardefineecho: 变量名称|内容值(默认为空字串)}}
- 例子
- {{#vardefineecho: text|变量的内容,看到了吗}}→
变量的内容,看到了吗
定义变量同时输出变量内容,现在变量text的内容为“变量的内容,看到了吗”。
- 其他用法
- 配合varexists,实现防止多次加载资源
- {{#if:→{{#varexists:防止多次加载JS_XXX}}||{{#vardefineecho:防止多次加载JS_XXX|这里加载JS}}}}
这里加载JS
避免JS重复加载 - {{#if:→{{#varexists:防止多次加载CSS_XXX}}||{{#vardefineecho:防止多次加载CSS_XXX|这里是CSS内容或加载CSS}}}}
这里是CSS内容或加载CSS
避免CSS重复加载
varexists
判断变量是否存在。存在则返回1,否则返回空。经常配合#if
使用。
出自扩展 Variables BWIKI和各大Wiki平台广泛使用此扩展。<br>在遥远的未来,它可能与Mediawiki新的并行解析器不兼容,请参阅扩展主页了解更多信息。。
- 格式
- {{#varexists: 变量名}}
- 例子
- 先定义变量 varexiststext:{{#vardefine:varexiststext|想吃烤肠}}。
- 判断存在否 {{#varexists: varexiststext}}→
1
- 未定义的变量 {{#varexists: count123465}}→
- 配合if使用 {{#if:→{{#varexists: count123465}}|存在|不存在}}
不存在
W
while
只要循环条件的wikitext输出非空,就循环执行。
- 注意
- 死循环可能导致页面无响应,甚至增加服务器压力。使用请谨慎。
出自扩展 Loops。
- 格式
- {{#while:
|条件
|循环内容
}}
- 例子
- {{#vardefine: i|0}}
- {{#while:→
|{{#ifexpr:{{#var: i}}< 5|true}}
|<nowiki/>
*{{#var: i}}{{#vardefine: i|{{#expr:}}{{#var: i}}+ 1}}
}}
- 0
- 1
- 2
- 3
- 4
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。
- 模板:干员 - 明日方舟
- 模板:面包屑 - 明日方舟
- 模板:图鉴/再生者/立绘 - 地下城堡3
- 模板:怪物信息栏 - 古神遗产
- 模板:挑战副本图鉴 - 汉家江湖
- 模板:秘籍图鉴 - 汉家江湖
- 模板:Only - 开普勒斯
- 模板:角色图鉴 - 空之要塞:启航
- 模板:超导体图鉴 - 空之要塞:启航
- 模板:Anvil - 我的世界地下城
widget
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
调用小部件(Widgets)。
Widgets允许用户创建HTML页面,能更灵活的为Wiki添加功能。
出自扩展 Widgets。
- 格式
- {{#widget: 小部件名|参数1=值1|参数2=值2|...|参数n=值n}}
- 例子
- 请参见Widgets。
参考资料
- ↑ Hello