社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
全站通知:
帮助:解析函数/ifexist
刷
历
编
< 帮助:解析函数
跳到导航
跳到搜索
根据指定页面是否存在,返回两个指定值中的一个。
出自扩展 ParserFunctions。
- 格式
- {{#ifexist: 页面标题|页面存在输出值|页面不存在输出值}}
- 例子
- 此函数当页面存在时判定为
true(真)
,不论它是否包含内容,是否为可见空白页(包含元数据,如分类链接和魔术字(Magic words),但不含可见内容),是否为空白页,是否为重定向页。 - 只有链接为红色(页面不存在,如
帮助:如何打辰纱
)的页面,才会被判定为false(假)
,包括曾经存在但已经被删除的页面。- {{#ifexist: 帮助:解析函数|exists|doesn't exist}}→
exists
- {{#ifexist: 帮助:如何打辰纱|exists|doesn't exist}}→
doesn't exist
- 自定义过的系统消息页(System message)和由软件定义的特殊页(Special pages)会被判定为
true(真)
。 - {{#ifexist: 特殊:监视列表|exists|doesn't exist}}→
exists
- {{#ifexist: 特殊:用户查核|exists|doesn't exist}}→
doesn't exist
(因为没有安装CheckUser) - {{#ifexist: MediaWiki:Copyright|exists|doesn't exist}}→
doesn't exist
(因为MediaWiki:Copyright页面没有被自定义过)
- 如果一个页面使用
#ifexist:
来检查目标页面是否存在,则该页面会出现在特殊:链入页面中目标页面的列表里。 - 所以如果本页面(帮助:解析函数/ifexist)中存在{{#ifexist:用户:114514}},则在特殊:链入页面/用户:114514中,会包含
帮助:解析函数/ifexist
。 - 在使用了共享媒体存储库(Shared media repository)的wiki上,
#ifexist:
还可以用来检查文件是否被上传到指定的存储库,而不是wiki自身:- {{#ifexist: 文件:现在.png|exists|doesn't exist}}→
doesn't exist
- {{#ifexist: 文件:测试.jpg|exists|doesn't exist}}→
doesn't exist
- {{#ifexist: 媒体:Test.png|exists|doesn't exist}}→
exists
- 如果本地wiki已经创建了以上文件,则会显示
exists
。 #ifexist:
不对跨wiki链接起作用。- ifexist的限制
#ifexist:
被认为是一个“高开销解析函数”;每个页面只能包含有限个这样的函数(包括模板中含的函数)。当超过限制的数量时,任何超出数量的#ifexist:
函数会被自动判定为false(假)
,不论目标页面是否存在。并且页面会被添加至分类:页面中有太多耗费的语法功能呼叫。各个追踪分类(Tracking categories)的名字在不同语言的wiki内可能有所不同。- 在一些应用场合下,可以使用CSS来模拟ifexist的效果,如使用选择器
a.new
(用于选择指向不存在页面的链接)或a:not(.new)
(用于选择指向存在页面的链接)。更进一步,既然单个页面中高开销解析解析函数的数量限制是由$wgExpensiveParserFunctionLimit参数控制的,可以通过修改LocalSettings.php
来满足使用要求。
- 实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。