2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

User:墨埜谷/储藏室

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

萌娘百科自带的帮助看得让人眼花,因此我把自己暂时要学的放在这里。

解析器函数

解析器函数是由一个MediaWiki扩展zhwp:mw:Extension:ParserFunctions提供,包含多个解析函数解释器。本扩展的典型语法是:
{{#函数名: 参数1 | 参数2 | 参数 3 …}}

目前有预定义的函数:expr,if,ifeq,ifexpr,switch(rand暂时被废除)。

各函数名都对大小写不敏感。

语句中的空格、换行等空白字符将被省略。
——zhwp:Help:解析器函数

expr

参见:Help:计算

expr函数,计算数学表达式。语法为:

{{#expr: ''表达式'' }}

表达式支持的运算符有:

运算符 名称 优先级 元数 结合性 样例
+ 9 1 {{#expr: + 7}} = 7
- 9 1 {{#expr: - 7}} = -7
not 逻辑非 9 1 {{#expr: not 7}} = 0
* 8 2 {{#expr: 30 * 7}} = 210
/ 8 2 {{#expr: 30 / 7}} = 4.2857142857143
div 8 2 {{#expr: 30 div 7}} = 4.2857142857143
mod 8 2 {{#expr: 30 mod 7}} = 2
+ 6 2 {{#expr: 30 + 7}} = 37
- 6 2 {{#expr: 30 - 7}} = 23
round 舍入(最大9) 5 2 {{#expr: 30 / 7 round 7}} = 4.2857143
= 等于 4 2 {{#expr: 30 = 7}} = 0
< 小于 4 2 {{#expr: 30 < 7}} = 0
> 大于 4 2 {{#expr: 30 > 7}} = 1
<= 小于等于 4 2 {{#expr: 30 <= 7}} = 0
>= 大于等于 4 2 {{#expr: 30 >= 7}} = 1
<> 不等于 4 2 {{#expr: 30 <> 7}} = 1
!= 不等于 4 2 {{#expr: 30 != 7}} = 1
and 逻辑与 3 2 {{#expr: 30 and 7}} = 1
or 逻辑或 2 2 {{#expr: 30 or 7}} = 1

round运算对运算数正负,位数正负都有不同的表现,参见下例。

逻辑运算符把假映射为0,把真映射为非0,且返回值只有0或1。

同一表达式中先计算高优先级运算。括号优先级高于一切。

if

if函数是一个if-then-else(如果-那么-否则)结构,和Excel的if函数类似。语法是:

{{#if: <判断字符串> | <那么字符串> | <否则字符串> }}
{{#if: <判断字符串> | <那么字符串> |}}

判断字符串为非空字符串(忽略前导或后缀空格),则函数返回那么字符串;若判断字符串不是非空,则返回否则字符串。否则字符可被省略而不会造成错误,但函数在判断字符串为空时便会返回空字符串。

ifeq

ifeq比较两个字符串,返回比较结果。语法为:

{{#ifeq: <字符串1> | <字符串2> | <相等时返回的字符串> | <不相等时返回的字符串> }}

注意:两个空字符串是相等的。

示例:

假设模板Ifeq test的内容是

{{#ifeq:{{{lang}}}|zh|我使用中文|I don't use Chinese}}

则{{Ifeq test|lang=zh}}的结果是我使用中文;而{{Ifeq test|lang=en|I prefer English}}的结果是I don't use Chinese

ifexist

ifexist根據指定名稱的頁面是否存在,返回兩個參數中的一個。用法:

{{#ifexist: <待測頁面標題> | <存在文字> | <不存在文字> }}

注意不能跨维基使用

示例:

首先,我们已经知道test页面不存在,User:Sex不存在,维基百科页面存在,英文维基百科的页面en:Minecraft存在,维基词典里面wikt:fuck存在。

  • {{#ifexist:test|有test頁面|無test頁面}} 得到無test頁面
  • {{#ifexist:User:Sex|該用戶頁存在|該用戶頁不存在}} 得到 該用戶頁不存在
  • {{#ifexist:维基百科||×}} 得到
  • {{#ifexist:en:Minecraft|1|0}} 得到 0
  • {{#ifexist:wikt:fuck|1|0}}} 得到 0

ifexpr

ifexpr计算数学表达式,并根据计算结果返回字符串。

{{ #ifexpr: <表达式> | <表达式不为0的结果> | <表达式为0的结果> }}

表达式语法与expr相同。

switch

switch将一个值与多个预设值比较,若有匹配时则返回指定字符串,即双射。语法是:

{{ #switch: <比较值>
| <预设值1> = <结果1>
| <预设值2> = <结果2>
| ...
| <预设值n> = <结果n>
| #default = <缺省结果> 
}}

switch将从左往右逐一尝试,直到出现匹配。函数将返回第一个匹配值对应的结果,而忽略后面的匹配值。如果没有匹配,函数将返回缺省结果。缺省结果是指的#default=后面的内容。其中#default=在结果不包含等号时是可以省略的。如果缺省结果没有设置,函数将返回空串。

注意:“缺省结果”是最后一个没有等号的预设值或“#default”预设值对应的结果;如果期望把一个包含“=”号的字符串作为缺省结果,则必须采用“#default”预设值形式。例如:

#default = <span style="color:red;">red</span>

switch也可用作满射(多对一,避免重复设置结果)。即某预设值后未设置结果,这样如果该预设值与比较值匹配,则函数返回第一个有结果的预设值的结果。例如:

{{ #switch: <比较值>
| <预设值1>
| <预设值2>
| <预设值3> = <结果3>
| <缺省结果>
}}

如果比较值与预设值1、预设值2或预设值3匹配,都将返回结果3。注意:“#default”后必须有“=”,但其他预设值可以使用“#default”的结果。

time

time是一个时间日期格式化函数,它的语法为:

{{ #time: 格式参数 }}

或者

{{ #time: 格式参数 | 时间参数 }}

如果时间参数未指定,则使用该条目被转换为HTML的时间(值)。注意到由于缓存的缘故,这与条目被浏览的时间可能会有高达1星期的偏差。因此可能需要手工更新,方法是加上action=purge参数访问页面。

格式参数是一种格式字符,与在PHP的date中的用法相似。

下列格式代码与在PHP中的意义一样。所不同的是...

如果時間未被指定,则显示文章最后一次被转换成HTML的时间。由于缓存的关系,此时间和你浏览文章的时间可能有最长一个星期的差别。所以有时可能需要人工更新数据,方法是编辑文章但不做任何修改即保存。

参数format是表示格式的字符串,类似于PHP的时间格式.

以下格式代码和PHP中date()函数意义相同。除了国际化(主要是语言)造成的差别以外,所有和PHP的不同点都应当作为软件的错误进行报告。其中所有的数字输出都会被替换成当地语言的时间格式,可以使用xn(见下文)恢复成显示原来的数字。

代码 描述 输出
d 一个月中的第 n 天,不足两位补充0 20
D 星期的缩写,通常不国际化
j 一个月中的第 n 天,不足两位不补0 20
l 星期的全称,通常不国际化 星期四
F 月份的的全称,通常需要国际化 6月
m 数字表示的月份,不足两位补充0 06
M 月份的的缩写,通常需要国际化 6月
n 数字表示的月份,不足两位不补0 6
Y 四位年份 2024
y 二位年份 24
H 小时,不足两位补充0 03
i 分钟,不足两位补充0 19
s 秒,不足两位补充0 31

以下代码是对PHP作出的扩展:

代码 描述
xn 将接下来的数字代码恢复成ASCII中的阿拉伯数字例如,在印地语中,{{ #time:H, xnH}}输出०६, 06。
xr 将接下来的数字代码显示成罗马数字
xg 输出月份名字的属格,只针对那些区分主格和属格的语言。
xx 输出"x"

任何其他字符都将不做处理直接输出。你也可以用引号来输出未经处理的字符串。

  • 引号中的字符直接输出(但不输出引号),没有配对的引号也直接输出。例如:
    • {{; #time: "现在是" F}} → 现在是 6月
    • {{ #time:i's"}} → 19'31"
  • 像PHP的date()函数一样的反斜杠转义也是支持的。 \H 直接输出 H , \" 直接输出 " 。

未来可能会增加更多格式代码,可能是完善PHP中已有功能,也可能是增加新功能。

参数time的格式参照PHP的strtotime()函数。它同时支持相对时间,如"+10 hours",用来表示时区转换。更多信息参见the GNU tar manual

下表以國際協調时间(UTC)2024年6月20日(星期四)03時19分31秒(北京時間2024年6月20日(星期四)11時19分31秒)为例说明各格式参数的作用。

格式参数 说明 显示结果
A 显示AM或PM AM
a 显示am或pm am
c 显示长日期 2024-06-20T03:19:31+00:00
D 星期数,以一个汉字显示
d 日期日数,有0补齐, 20
F或M 月份 6月
G或g 当前UTC时间小时数,1位或2位数字 3
H或h 小时数,2位数字 03
i 分钟数,2位数字 19
j 日数,2位数字 20
L 日期星期数,1位数字,星期日为1,星期六为7 1
l 日期星期数,3位汉字 星期四
m 月份数,2位数字 06
N 星期数,星期一为1,星期日为7 4
n 月份数,1位或2位数字 6
r 英文长日期格式 Thu, 20 Jun 2024 03:19:31 +0000
s 秒数 31
t 该月天数 30
U
主条目:zhwp:unix時間
時間序號,1970-1-1 0:0:1为1
1718853571
W 日期周数,显示日期为当年第几周 25
w 星期数,星期日为0,星期六为6 4
Y 日期年份,4位数字 2024
y 日期年份,2位数字 24
z 显示日期为当年第几日 171

系统默认的时间参数为当前UTC+0时间,可以使用{{#time:参数|+8 hours}}得到当前北京时间(UTC+8时间)。

时间参数可以使用绝对时间,如“2008-12-31 23:59:59”,也可以使用相对时间,如“+7 days”或者“-5 hours”得到默认时间7日之后或默认时间5小时之前的时间。也可以二者混合使用,比如{{#time:Y-m-d H:i:s|2001-2-3 04:05:06 +1 year +2 months +3 days +4 hours +5 minutes +6 seconds}}返回 2002-04-06 08:10:12

使用xr可以在其后显示罗马数字,如{{#time:xrY年xrm月xrd日|2008-12-31}}显示为MMVIII年XII月XXXI日

invoke

invoke vt. 调用

(调用位于Scribunto中的模块;见维基百科:Lua什么鬼啊!!!

{{#invoke: module | function | arg1 | arg2 | ... }}

Eg.1 {{#invoke: Math | random | 1 | 10 }} → 1
Eg.2 {{#invoke: Math | random | 1 | 10 }} → 1
Eg.3 {{#invoke: Math | random | 1 | 10 }} → 8
备注1:min value&max value的值可以填写字母和unicode,但还没有搞清楚是怎么转换的。大概是编码之类的
备注2:维基百科的模板:zhwp:分类:基于Lua编程语言的模板,那么萌娘百科有哪些模板?

变量

这是一个“变量”的列表,变量可被用于维基语法。变量的返回值可以根据时间、维基项目、引用页面而变化。

以下的列表中,变量都在左边,右边是它的在此时、此项目、此页面返回值。

变量名是一组所谓的“魔术字”的一部分。

常变量

{{ns:-2}} {{ns:Media}} Media Media
{{ns:-1}} {{ns:Special}} Special Special
{{ns:0}}   (主名字空间) (空字符串)
{{ns:1}}  {{ns:Talk}} Talk Talk
{{ns:2}}  {{ns:User}} User User
{{ns:3}}  {{ns:User_talk}} User talk User talk
{{ns:4}}  {{ns:Project}} 萌娘百科 萌娘百科
{{ns:5}}  {{ns:Project_talk}} 萌娘百科 talk 萌娘百科 talk
{{ns:6}}  {{ns:Image}} File File
{{ns:7}}  {{ns:Image_talk}} File talk File talk
{{ns:8}}  {{ns:MediaWiki}} MediaWiki MediaWiki
{{ns:9}} {{ns:MediaWiki_talk}} MediaWiki talk MediaWiki talk
{{ns:10}} {{ns:Template}} Template Template
{{ns:11}} {{ns:Template_talk}} Template talk Template talk
{{ns:12}} {{ns:Help}} Help Help
{{ns:13}} {{ns:Help_talk}} Help talk Help talk
{{ns:14}} {{ns:Category}} Category Category
{{ns:15}} {{ns:Category_talk}} Category talk Category talk
{{SITENAME}} 萌娘百科
{{SERVER}} https://moegirl.icu
{{SERVERNAME}} moegirl.icu
{{localurl:页面完整名}} /%E9%A1%B5%E9%9D%A2%E5%AE%8C%E6%95%B4%E5%90%8D
{{localurl:a&b!}}
{{localurle:a&b!}}
/A%26b!
/A%26b!
{{localurl:页面|query=x}} /index.php?title=Page&query=x
{{fullurl:页面完整名}} https://moegirl.icu/%E9%A1%B5%E9%9D%A2%E5%AE%8C%E6%95%B4%E5%90%8D
{{fullurl:a&b!}}
{{fullurle:a&b!}}
https://moegirl.icu/A%26b!
https://moegirl.icu/A%26b!

伪模板localurl将空格替换为下划线,对特殊字符进行编码。比如{{localurl:a !}}得到/A_!。

注意到localurl不会将“|”后的“查询”字符串编码。这个问题可以借把查询字符串移至左边解决。比如,Special:ContributionsSpecial:Recentchangeslinked数据可以在“/”后出现:

{{fullurl:Special:Contributions/墨埜谷|limit=10}}得到:
https://moegirl.icu/index.php?title=Special:Contributions/%E5%A2%A8%E5%9F%9C%E8%B0%B7&limit=10;
{{fullurl:Special:Contributions|target=墨埜谷&limit=10}}会得到不正确的结果:
https://moegirl.icu/index.php?title=Special:Contributions&target=墨埜谷&limit=10

localurle及其副本fullurle可以执行更多字符编码,但只用于Mediawiki内部,而其存在是为了保证向前兼容性。

伪模板{{fullurl}}是一个新近添加的{{SERVER}}{{localurl}}的缩略。

随时间变化

{{CURRENTYEAR}} 2024 {{CURRENTMONTH}} 06
{{CURRENTMONTHNAME}} 6月 {{CURRENTMONTHABBREV}} 6月
{{CURRENTMONTHNAMEGEN}} 6月 {{CURRENTWEEK}} 25
{{CURRENTDAY}} 20 {{CURRENTDAY2}} 20
{{CURRENTDAYNAME}} 星期四 {{CURRENTDOW}} 4
{{CURRENTTIME}} 03:19 {{REVISIONID}} -
{{NUMBEROFARTICLES}} 132,209
{{NUMBEROFFILES}} 0
{{NUMBEROFUSERS}} 72,541

NUMBEROFARTICLES:在主名字空间内的包含至少一个链接且不是重定向的页面,包括小作品消歧义页面。

返回结果也与系统变量$wgUseCommaCount有关。如果该变量为真,条目统计将仅依据文章是否包含逗号(“,”)来统计,否则就会只统计有内部链接(“[[”)的条目。在DefaultSettings.php的默认设置为假。

时间变量并非随页面的每一次被打开而变化。由于条目的HTML文本有缓存机制,因此时间变量有可能误差达24小时,所以它们并不是可信的。

CURRENTWEEK从1到54 (上一年最后一周如果跨到了今年也算是第一周,在这种情况下如果今年最后一周跨到了下一年,则为第54周)
CURRENTMONTHNAMEGEN是月份名称属格语法形式,用于芬兰语;
CURRENTDAY2在日期1到9前加上前导0,从而可以得到ISO格式日期:2024-06-20T03:19Z

随页面变化

{{PAGENAME}} 墨埜谷/储藏室 {{NAMESPACE}} User
{{PAGENAMEE}} %E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4 {{NAMESPACEE}} User
{{FULLPAGENAME}} User:墨埜谷/储藏室 {{SUBPAGENAME}} 储藏室
{{FULLPAGENAMEE}} User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4 {{SUBPAGENAMEE}} %E5%82%A8%E8%97%8F%E5%AE%A4
{{TALKSPACE}} User talk {{SUBJECTSPACE}} User
{{TALKSPACEE}} User_talk {{SUBJECTSPACEE}} User
{{TALKPAGENAME}} User talk:墨埜谷/储藏室 {{SUBJECTPAGENAME}} User:墨埜谷/储藏室
{{TALKPAGENAMEE}} User_talk:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4 {{SUBJECTPAGENAMEE}} User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4
{{ARTICLESPACE}} User {{ARTICLEPAGENAME}} User:墨埜谷/储藏室
{{ARTICLESPACEE}} User {{ARTICLEPAGENAMEE}} User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4

在主名字空间(条目的名字空间){{NAMESPACE}}和{{NAMESPACEE}}都返回空字符串。

PAGENAMEE显示经编码的页面标题,即空格变为下划线,特殊字符编码,所以可用来组成URL。例如,某页面叫"Grand café",PAGENAMEE会返回"Grand_caf%C3%A9"。不要在localurl系列变量的第一部分使用此变量,都则会造成结果的紊乱。

当被用于模板中时,这些变量返回的都是引用模板的页面相应值,而不是被引用模板的相应值。

随修改版本变化

{{REVISIONID}}得到-

REVISIONID返回一个特殊的值,以显示当前页面的当前版本在所有页面的所有版本中的编号。在URL中可以采用添加“&oldid=123456”的方法引用此页面的该版本,无论是否为最新版本。这在讨论页、文章引用都十分有用。

{{REVISIONTIMESTAMP}}得到20220808044330,即最後一次編輯的时间戳(TIMESTAMP)。

多变量结合的样例

  • {{fullurl:{{FULLPAGENAME}}|action=edit}}
https://moegirl.icu/index.php?title=User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4&action=edit
  • {{fullurl:Special:Whatlinkshere|target={{NAMESPACE}}:{{PAGENAME}}}}
https://moegirl.icu/index.php?title=Special:Whatlinkshere&target=User:墨埜谷/储藏室
  • {{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}}
https://moegirl.icu/index.php?title=User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4&action=edit
  • {{fullurl:Special:Whatlinkshere|target={{NAMESPACE}}:{{PAGENAME}}}}
https://moegirl.icu/index.php?title=Special:Whatlinkshere&target=User:墨埜谷/储藏室
  • [[{{NAMESPACE}}:{{PAGENAME}}_1]]
User:墨埜谷/储藏室_1
  • {{fullurl:{{NAMESPACE}}:{{PAGENAME}}_1}}
https://moegirl.icu/User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4_1
  • {{fullurl:{{NAMESPACE}}:{{PAGENAME}}|oldid={{REVISIONID}}}}
https://moegirl.icu/index.php?title=User:%E5%A2%A8%E5%9F%9C%E8%B0%B7/%E5%82%A8%E8%97%8F%E5%AE%A4&oldid=-

{{SERVER}}{{localurl:页面 }}{{fullurl:页面 }}等效,不过后者在Mediawiki(1.5以上)版本中才可用。

最后一个样例对页面本身用处不大,但可作为一种“永久链接”在复制件中发挥功用。

参见

2024


6月 20


11:19