社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103

全站通知:

帮助:解析函数/ifexist

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索


根据指定页面是否存在,返回两个指定值中的一个。

出自扩展 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(真)
2233好哇
{{#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使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考